我假设您正在尝试使用 .qss 文件并使用该文件设置样式表。
开发人员没有完全使用 QCalendarWidget 实现外部样式表的使用,因此您必须稍微修改一下。
我建议您在 .qss 文件中添加一个常量,您正在使用类似以下内容:
@cons BACKGROUND_COLOR: cyan
然后你可以在你的代码中读取文件:
String color = "";
try {
URL qssFile = getClass().getResource("*PATHNAME*");
Scanner scanner = new Scanner(qssFile.openStream());
String nextLine;
try {
while (scanner.hasNextLine()){
nextLine = scanner.nextLine();
if (nextLine.contains("BACKGROUND_COLOR:")) {
color = nextLine.substring(nextLine.indexOf("BACKGROUND_COLOR:") + 17);
}
}
finally{
scanner.close();
}
} catch (IOException e) {
e.printStackTrace();
}
代码中的17指的是BACKGROUND_COLOR的长度:所以我们可以得到它后面的文字。
接下来,您将要创建一个新的 QColor,将其设置为上面的可变颜色。接下来从 QColor 创建一个新的 QBrush。然后创建一个新的 QTextCharFormat 并将其背景设置为 QBrush。最后,通过调用 QCalendarWidget 上的 setWeekdayTextFormat 方法设置格式,将您希望更改的星期几和您希望更改为的格式传递给它。以下代码将 HorizontalHeader 中一周中每一天的框设置为背景色为青色:
QColor c = new QColor(color);
QBrush b = new QBrush(c);
QTextCharFormat format = new QTextCharFormat();
format.setBackground(b);
this.setWeekdayTextFormat(Qt.DayOfWeek.Sunday, format);
this.setWeekdayTextFormat(Qt.DayOfWeek.Monday, format);
this.setWeekdayTextFormat(Qt.DayOfWeek.Tuesday, format);
this.setWeekdayTextFormat(Qt.DayOfWeek.Wednesday, format);
this.setWeekdayTextFormat(Qt.DayOfWeek.Thursday, format);
this.setWeekdayTextFormat(Qt.DayOfWeek.Friday, format);
this.setWeekdayTextFormat(Qt.DayOfWeek.Saturday, format);
将所有这些代码一起使用,您就可以通过使用 .qss 文件来更改 HorizontalHeader 背景颜色(如果您愿意,还可以使用更多)。