Seite 1 von 1

QPushButton einfärben, ohne native Form zu verlieren?

Verfasst: 16. Dezember 2010 19:01
von -=Freaky=-
nabend,

faellt hier vielleicht jemandem eine einfache Möglichkeit ein, einen QPushButton einzufärben (hintergrundfarbe), ohne seine Form zu verlieren (die der nativen buttons, die gezeichnet werden)?
das scheint nicht so einfach zu sein, logischer weise, weil der button dann ja nicht mehr richtig nativ waere.
mit einfachen style sheets/styles funktioniert das offenbar nicht, und wenn ich ein icon benutze, kann man scheinbar keinen text mehr darauf anzeigen.
aber falls es doch eine methode gibt, sowas anzustellen, wuerde ich sie gerne probieren.
ich bin also fuer alle hinweise ueberaus dankbar.

vielen dank im voraus
julian

Verfasst: 16. Dezember 2010 22:24
von upsala
In der Palette die Button-Farbe ändern (Kann man auch im Designer testen)

Verfasst: 17. Dezember 2010 09:11
von -=Freaky=-
upsala hat geschrieben:In der Palette die Button-Farbe ändern (Kann man auch im Designer testen)
das habe ich bereits versucht, ich habe auch mal testweise die komplette Palette (jede Farbe) auf dieselbe geaendert, und zumindest hier unter linux hat das mit keinem der standard-styles (qtconfig) funktioniert, es aenderte sich gar nichts (weder im designer, noch wenn ich es im code selbstgemacht habe).

gruesse
julian

Verfasst: 17. Dezember 2010 09:29
von franzf
Hier unter Linux funktioniert das wunderbar:

Code: Alles auswählen

QPalette pal = button.palette();
pal.setColor(QPalette::Button, Qt::red);
button.setPalette(pal);
Und schwupps hat der button eine rote Hintergrundfarbe.

Das geht mit allen probierten Styles: windows, motif, qtcurve, bespin, cleanlooks, plastique.
Wenn es bei dir nicht geht -> Code Plz.

Verfasst: 17. Dezember 2010 09:45
von -=Freaky=-
ich bin gerade an einem anderen rechner mit gnome und aktuellem Qt, und hier funktioniert genau das auch nicht.
was ich eben probiert habe:

Code: Alles auswählen

QPushButton btn("BTN1");
QPalette pal = btn.palette();
pal.setColor(QPalette::Button, Qt::red);
btn.setPalette(pal);
btn.show();

QPushButton btn2("BTN2");
btn2.show();
das einfach in main(), und die beiden buttons unterscheiden sich kein stueck (vom text mal abgesehen) ...

gruesse
julian