Ich habe derzeit ein Problem.
Ich versuche, mein Programm in ein Farbschema einzupassen.
Ich habe eine komplette QPalette dafür erstellt, bei der ich jeder ColorRole erstmal eine Testfarbe zugeordnet habe.
Wenn ich nun diese Palette meinem Fenster zuweise, werden nicht alle Objekte richtig eingefärbt, vor allem die QPushButtons tun so garnicht, was sie sollen. Deßhalb habe ich jetzt testweise einen QPushButton einzeln eigefärbt. Ein paar Farben, wie z.B. die Schriftfarbe werden auch richtig übernommen, aber z.B. die Background-Farbe funzt nicht.
Hier der Code:
Definitionen in Header-Datei:
Code: Alles auswählen
QPushButton *quitButton;
QColor *greenColor;
QColor *blackColor;
QColor *grayColor;
QPalette *buttonPalette;
Code: Alles auswählen
greenColor = new QColor(0,255,0,255);
blackColor = new QColor(0,0,0,255);
grayColor = new QColor(75,75,75,255);
//Standart-ColorRoles
buttonPalette->setColor(QPalette::Background,blackColor->rgb());
buttonPalette->setColor(QPalette::Foreground,greenColor->rgb());
buttonPalette->setColor(QPalette::Base,grayColor->rgb());
buttonPalette->setColor(QPalette::AlternateBase,grayColor->rgb());
buttonPalette->setColor(QPalette::Text,greenColor->rgb());
buttonPalette->setColor(QPalette::Button,blackColor->rgb());
buttonPalette->setColor(QPalette::ButtonText,greenColor->rgb());
//Button-ColorRoles
buttonPalette->setColor(QPalette::Light,grayColor->rgb());
buttonPalette->setColor(QPalette::Midlight,grayColor->rgb());
buttonPalette->setColor(QPalette::Dark,blackColor->rgb());
buttonPalette->setColor(QPalette::Mid,blackColor->rgb());
buttonPalette->setColor(QPalette::Shadow,greenColor->rgb());
//Highlight-ColorRoles
buttonPalette->setColor(QPalette::Highlight,blackColor->rgb());
buttonPalette->setColor(QPalette::HighlightedText,
greenColor->rgb());
//Spezial-Text-ColorRoles
buttonPalette->setColor(QPalette::BrightText,greenColor->rgb());
buttonPalette->setColor(QPalette::Link,greenColor->rgb());
buttonPalette->setColor(QPalette::LinkVisited,greenColor->rgb());
Code: Alles auswählen
quitButton = new QPushButton(tr("&Quit"));
quitButton->setPalette(*buttonPalette);
EDIT:
Ich habe das Program mal im Motif-Style probiert, und da funktioniert alles.
Es schein also am WinXP-Style zu liegen.
Falls jemand da eine Idee hat, dann wäre ich dafür sehr dankbar.
EDIT Ende!
Danke im Voraus,
Prof. MAAD