Je suppose que vous essayez d'utiliser un fichier .qss et de définir la feuille de style en utilisant ce fichier.
Les développeurs n'ont pas complètement implémenté l'utilisation de feuilles de style externes avec le QCalendarWidget, vous devrez donc le pirater un peu.
Je suggère que vous avez ajouté une constante au fichier .qss que vous utilisez quelque chose comme:
@cons BACKGROUND_COLOR: cyan
Ensuite, vous pouvez lire le fichier dans votre code:
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();
}
Le 17 dans le code se réfère à la longueur de BACKGROUND_COLOR: afin que nous puissions obtenir le texte après.
Ensuite, vous voudrez créer un nouveau QColor, en le définissant à la couleur variable par le dessus. Ensuite, créez un nouveau QBrush à partir du QColor. Puis créez un nouveau QTextCharFormat et définissez son arrière-plan pour qu'il soit le QBrush. Enfin, définissez le format en appelant la méthode setWeekdayTextFormat sur le QCalendarWidget, en lui transmettant les jours de la semaine que vous souhaitez modifier et le format que vous souhaitez modifier. Le code de suivi définit la case pour chaque jour de la semaine dans la HorizontalHeader d'avoir une couleur de fond de cyan:
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);
Utilisez ces codes ensemble et vous avez vous-même un moyen de changer la couleur de fond de HorizontalHeader en utilisant Fichiers .qss (et plus si vous le souhaitez).
Je me demande est-ce encore possible? Ma meilleure estimation après presque une heure de recherche est de se rappeler que les dates sont affichées sur un QTableWidget (je crois), et que vous voulez éditer le QHeaderView pour cela (en particulier la méthode paintSection). J'espère que quelqu'un peut venir acheter et jeter plus de lumière à ce sujet. – ssell
Je suppose que vous feriez mieux de demander une solution Ct/cpp pour cela; Je doute que l'implémentation de Jambi soit différente et si elle diffère, piquez-moi alors ... Et je regarderai si cela peut être corrigé :) – Smar