Probleme mit QPalette

Alles rund um die Programmierung mit Qt
Antworten
prof_maad
Beiträge: 40
Registriert: 25. September 2005 14:33
Wohnort: /root/

Probleme mit QPalette

Beitrag von prof_maad »

Hallo alle miteinander,

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;
Initialisierung in Cpp-Datei:

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());
Zuweisung der Palette an den QPushButton:

Code: Alles auswählen

quitButton = new QPushButton(tr("&Quit"));
quitButton->setPalette(*buttonPalette);
So, das war ne Menge Code, aber falls mir jemand helfen könnte, so dass mein QPushButton letztendlich nen schwarzen Hintergrund und grünen Text hat, wäre das Klasse.

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
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

prof_maad
Beiträge: 40
Registriert: 25. September 2005 14:33
Wohnort: /root/

Beitrag von prof_maad »

Okay, danke erstmal, auch wenn mir der Thread nicht wirklich was bringt. Ich habe ihn auch vorher schon gesehen.

Mein Problem ist, dass, wenn mein Programm im Windows XP-Style läuft, die Buttons und RadioButtons u.s.w. die Standard-Windows-Hintergrundfarbe haben, und nicht die, die sie laut meiner Palette haben sollten.

So, wenn jemand dafür ne Lösung weis, dann bitte melden.

Ciao und Danke im Voraus,

Prof. MAAD
Antworten