Seite 1 von 1

QPalette, QRadioButton

Verfasst: 2. April 2008 16:50
von tamasi
Hi,

wie aus der Überschrift zu erwarten, möchte ich einen QRadioButton ein bissel umfärben, speziell wenn er aktiviert wird.

Eig hoffte ich dass ganze mit einer Palette zu lösen, aber egal ob ich autoFill, setBackground setForeground usw auf true, false setze,
meiner Palette aktive, inaktive Gruppen, jedwede mir bekannte Rollen verteile, es geht nicht.
ui.rb_A_0->setAutoFillBackground(true);
ui.rb_A_0->setBackgroundRole(QPalette::Background);
QPalette p= ui.rb_A_0->palette();
p.setColor(QPalette::Background,Qt::red);
ui.rb_A_0->setPalette(p);
Alles was geht, ich bekomme eine rote rechteckige Fläche um den Button. In den Button selbst kam ich zu keinem Zeitpunkt.

Geht das überhaupt damit, oder muss ich extra eine Style definieren und dann das Primitiv für RadioButton inkl. der Sub_Elemente überschreiben?

lg

Verfasst: 2. April 2008 19:02
von upsala
Man nehme den Designer und ändere dort die palette so lange, bis man das richtige gefunden hat, dank Vorschau geht das relativ zugügig...

Verfasst: 3. April 2008 08:25
von tamasi
Es passiert genau das gleiche wie per Hand. Das einzigste was ich ändern kann, ist das Rechteck des Buttons inkl. Text.
An den Inhalt des Buttons komme ich nicht. Ich kann weder die Größe noch die Farbe des Buttons ändern, den gecheckten Punkt innerhalb umfärben, in seinem Radius umändern oder andersweitige Änderungen an dem Button vornehmen.

Verfasst: 3. April 2008 08:35
von franzf
tamasi hat geschrieben:Es passiert genau das gleiche wie per Hand. Das einzigste was ich ändern kann, ist das Rechteck des Buttons inkl. Text.
An den Inhalt des Buttons komme ich nicht. Ich kann weder die Größe noch die Farbe des Buttons ändern, den gecheckten Punkt innerhalb umfärben, in seinem Radius umändern oder andersweitige Änderungen an dem Button vornehmen.
Der gecheckte Punkt innerhalb hört auf den Namen "QPalette::WindowText" (zumindest bei meinem Style "Bespin"), der Hintergrund auf "QPalette::Window". Hab das grad nämlich selber gebraucht und hat gleich geklappt.
autoFillBackground musst du auf "true" setzen.

Grüße
Franz

Verfasst: 3. April 2008 09:05
von upsala
in seinem Radius umändern
Mit QPalette? Wie kommst du denn auf die Idee? Dafür ist QStyle zuständig...

Verfasst: 3. April 2008 09:13
von tamasi
Das mit der größe wäre erst einmal nicht so wichtig. Viel bedeutsamer ist die Umfärbung.

Keine Ahnung ob hier etwas schief läuft, aber beim Style "windowsxp" komme ich nicht an das Grün für den Punkt.
QPalette::WindowText ändert die Beschriftung vom Button, das wars.

Das Grün wird mir beim Start der Paletteneinstellung im Designer auch nirgends per default angeboten. Wenigstens eine der ganze möglichen Rollen müsste ja als Standard Grün sein.

Und ja, AutoFillBgr steht auf true.

Bin grad irgendwie ratlos.
Ich denke ich versuchs mal per QStyle. Den setze ich dann speziell für das Parentwidget. Hoffe es geht so.

Verfasst: 3. April 2008 12:28
von tamasi
Mit einem eigenen myStyle geht es ohne Probleme.

Eine Frage hätte ich noch.

Binde ich mein myStyle per QApplication::setStyle (new myStyle()), im main.cpp ein, geht alles wunderbar.

Möchte ich dagegen das myStyle nur für das Widget mit den RadioButtons einbinden passiert nichts.

Die Hilfe erläutert leider nirgends ob es Unterschiede in der Initierung zwischen einem "globalen" Style per QApplication und einem Widget Style innerhalb eines schon vorhanden QApplication Styles gibt.

Ich arbeite unter Windows XP, d.h. Application nutzt auomatisch das QWindowsXPStyle.

Den scheine ich in meinem childwidget nicht übrschreiben zu können, obwohl :
childwidget->style();
childwidget->setStyle( new myStyle());
childwidget->style();

eine erfolgreiche Änderung des Stylepointers anzeigt.

Weiß da wer Rat?