QButton + Farbänderung

Verschiedenes zu Qt
Antworten
dl4dz
Beiträge: 20
Registriert: 30. April 2006 12:26

QButton + Farbänderung

Beitrag von dl4dz »

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
Es gibt nichts Gutes, ausser man tut es...
neverlord
Beiträge: 3
Registriert: 24. April 2006 23:04

Beitrag von neverlord »

Es gibt die beiden Signale

Code: Alles auswählen

void QAbstractButton::pressed ()
This signal is emitted when the button is pressed down.
und

Code: Alles auswählen

void QAbstractButton::released ()
This signal is emitted when the button is released.
Musst also bei pressed die Farbe ändern und bei released die Farbe zurücksetzen.


MfG :)
dl4dz
Beiträge: 20
Registriert: 30. April 2006 12:26

Beitrag von dl4dz »

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.
:arrow: 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
Es gibt nichts Gutes, ausser man tut es...
neverlord
Beiträge: 3
Registriert: 24. April 2006 23:04

Beitrag von neverlord »

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
Adi
Beiträge: 87
Registriert: 1. Januar 2006 14:51

Beitrag von Adi »

Ich machs so:

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();
P.S.: müsste das nicht on_PBsaveqrg_clicked() heissen?
Win 2k, Win XP
QT Win Opensource 4.1.1
MinGW 3.4.2
dl4dz
Beiträge: 20
Registriert: 30. April 2006 12:26

Beitrag von dl4dz »

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....

Code: Alles auswählen

 QPalette palette = PBsaveqrg->palette(); 
    palette.setColor(QColorGroup::Button, green); // Für grün 
    PBsaveqrg->setPalette(palette); 
    PBsaveqrg->repaint(); 
Diese Zeile ist anders...
:arrow: 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.

:wink:

Danke nochmal !!!

DL4DZ
Es gibt nichts Gutes, ausser man tut es...
Step
Beiträge: 1
Registriert: 31. Mai 2006 12:40
Wohnort: Berlin

es geht noch einfacher!

Beitrag von Step »

hallo zusammen,

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));
:idea:
Antworten