.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の背景色を変更する方法があります。