Hallo Zusammen,
Ich habe in meiner Software einen PushButton. Wenn ich auf diesen klicke, soll sich die Hintergrundfarbe des Buttons ändern.
Hat jemand eine Idee, wie man sowas macht?
dl4dz
QButton + Farbänderung
QButton + Farbänderung
Es gibt nichts Gutes, ausser man tut es...
Es gibt die beiden Signale
und
Musst also bei pressed die Farbe ändern und bei released die Farbe zurücksetzen.
MfG
Code: Alles auswählen
void QAbstractButton::pressed ()
This signal is emitted when the button is pressed down.Code: Alles auswählen
void QAbstractButton::released ()
This signal is emitted when the button is released.MfG
Hallo neverlord,
Danke für Deine Antwort. Ja, das mit den Signalen kenne ich. Ich nutze es auch um den Text des Buttons zu verändern.
Ich mache es mal etwas konkreter.
Mein Button ist ein einfacher "PushButton", der NICHT "toggelt".
Ich schreibe mal etwas Code....
void tuxtestWidget::PBsaveqrg_clicked()
{
QString pbsavebutton = PBsaveqrg->text();
if (pbsavebutton == "Sa&ve")
{
PBsaveqrg->setText("R.QRG");
}
if (pbsavebutton == "R.QRG")
{
PBsaveqrg->setText("Sa&ve");
}
}
Das funktioniert. Beim Programmstart zeigt mein PushButton den Text "Save". Nach dem Draufklicken "R.QRG"....beim nächsten Klick wieder "Save"...usw....
Jetzt möchte ich, dass beim Programmstart die Text-Hintergrund-Farbe für den Button GELB ist. Das funktioniert auch. Das habe ich über den QT-Designer eingestellt.
Beim nächsten Klick soll die Text-Hintergrund-Farbe GRÜN sein. Bein nächsten Klick wieder GELB...usw...
Wie geht das????
setBackgroundColor geht leider nicht....
dl4dz
Danke für Deine Antwort. Ja, das mit den Signalen kenne ich. Ich nutze es auch um den Text des Buttons zu verändern.
Ich mache es mal etwas konkreter.
Mein Button ist ein einfacher "PushButton", der NICHT "toggelt".
Ich schreibe mal etwas Code....
void tuxtestWidget::PBsaveqrg_clicked()
{
QString pbsavebutton = PBsaveqrg->text();
if (pbsavebutton == "Sa&ve")
{
PBsaveqrg->setText("R.QRG");
}
if (pbsavebutton == "R.QRG")
{
PBsaveqrg->setText("Sa&ve");
}
}
Das funktioniert. Beim Programmstart zeigt mein PushButton den Text "Save". Nach dem Draufklicken "R.QRG"....beim nächsten Klick wieder "Save"...usw....
Jetzt möchte ich, dass beim Programmstart die Text-Hintergrund-Farbe für den Button GELB ist. Das funktioniert auch. Das habe ich über den QT-Designer eingestellt.
Wie geht das????
setBackgroundColor geht leider nicht....
dl4dz
Es gibt nichts Gutes, ausser man tut es...
setBackgroundColor gibt es auch nicht, aber es gibt
void setBackgroundRole ( QPalette::ColorRole role )
Musst dir als Zwischenschritt wohl eine eigene Farbpalette definieren und die dann dem Button zuweisen.
Ich weiß jetzt aber nicht, ob es die Paletten auch schon unter Qt3 gab, ich habe hier nur die Qt4 Doku.
MfG
void setBackgroundRole ( QPalette::ColorRole role )
Musst dir als Zwischenschritt wohl eine eigene Farbpalette definieren und die dann dem Button zuweisen.
Ich weiß jetzt aber nicht, ob es die Paletten auch schon unter Qt3 gab, ich habe hier nur die Qt4 Doku.
MfG
Ich machs so:
P.S.: müsste das nicht on_PBsaveqrg_clicked() heissen?
Code: Alles auswählen
QPalette palette = PBsaveqrg->palette();
palette.setColor(QPalette::Button, QColor(0,255,0 )); // Für grün
PBsaveqrg->setPalette(palette);
PBsaveqrg->repaint();
Win 2k, Win XP
QT Win Opensource 4.1.1
MinGW 3.4.2
QT Win Opensource 4.1.1
MinGW 3.4.2
Hallo Zusammen,
Vielen Dank für Eure Hilfe. Es ist bei mir nicht ganz genau so, wie Ihr es beschrieben habt, aber fast. Das war sehr hilfreich für mich.
Bei mir muss ich schreiben....
Diese Zeile ist anders...
palette.setColor(QColorGroup::Button, green);
Nun funzt es!!!
Vermutlich müsste es
"on_PBsaveqrg_clicked()" heissen...
Als "blutiger Anfänger" in C++ und QT hab' ichs noch nicht so mit den Konventionen.
Danke nochmal !!!
DL4DZ
Vielen Dank für Eure Hilfe. Es ist bei mir nicht ganz genau so, wie Ihr es beschrieben habt, aber fast. Das war sehr hilfreich für mich.
Bei mir muss ich schreiben....
Code: Alles auswählen
QPalette palette = PBsaveqrg->palette();
palette.setColor(QColorGroup::Button, green); // Für grün
PBsaveqrg->setPalette(palette);
PBsaveqrg->repaint(); Nun funzt es!!!
Vermutlich müsste es
"on_PBsaveqrg_clicked()" heissen...
Als "blutiger Anfänger" in C++ und QT hab' ichs noch nicht so mit den Konventionen.
Danke nochmal !!!
DL4DZ
Es gibt nichts Gutes, ausser man tut es...
es geht noch einfacher!
hallo zusammen,
ich habe eine noch einfachere lösung, um die farbe in einem button zu ändern:

ich habe eine noch einfachere lösung, um die farbe in einem button zu ändern:
Code: Alles auswählen
QColor color(QColor(0, 255, 0, 180));
okButton = new QPushButton("&OK");
okButton->setPalette(QPalette(color));