Hallo Leute,
hoffentlich kennt jemand hier im Forum das Problem.
Laut Qt Dokumentation lassen sich für einen QPushButton verschiedene Icons je nach State und Mode festlegen. Da scheint es aber entweder einen Bug zu geben oder ich verwende es falsch. Letzteres wäre mir lieber.
Bespiel:
Der Button hat im Normalzustand ein weißes Fragezeichen als Icon. Nun soll das Icon im Zustand "pressed" ein blaues Fragezeichen sein. Und im Zustand "released" wieder zurück zum weißen Icon.
Leider nimmt der Button niemals ein anderes Icon an, er zeigt egal in welchem Zustand und egal ob Mode On/Off immer das Bild mit dem weißen Fragezeichen. Lediglich, wenn ich den Button auf checkable(true) setze, dann zeigt er im Zustand "checked" das blaue Icon an.
Das Problem: Der Button darf kein checkable Button sein, ich brauche einen ganz normalen.
Leider bekomme ich das gewünschte Ergebnis nicht mal im Designer hin. Ich habe dort aus lauter Irrsinn sogar mal für alle Zustände und Modi ganz unterschiedliche Bilder vergeben, aber es wird nie das gewünschte Resultat erzeugt.
Kennt jemand das Verhalten? Oder anders gefragt, hat schon mal jemand das Resultat erfolgreich erzeugt, das ich hier erreichen will?
Bin für jeden Hinweis dankbar!
Beste Grüße,
~Mad
QPushButton / Icons
- Madmartigan
- User
- Beiträge: 200
- Registriert: Donnerstag 18. Juli 2013, 07:59
- Wohnort: Berlin
- Madmartigan
- User
- Beiträge: 200
- Registriert: Donnerstag 18. Juli 2013, 07:59
- Wohnort: Berlin
Doku zu QPushButton:
http://doc.qt.io/qt-5/qpushbutton.html
Doku zu QIcon:
http://doc.qt.io/qt-5/qicon.html
Ich hab nichts Außergewöhnliches versucht, lediglich die Methode AddFile benutzt.
http://doc.qt.io/qt-5/qicon.html#addFile
Ich füge einfach Bilder von der lokalen Platte zu meinem QIcon-Objekt und setze die Modi und States entsprechend. Die Bilder werden gefunden also die Datei-Pfade sind valide. Nur erreiche ich, egal in welcher wilden Konstellation, niemals das gewünschte Verhalten des Buttons.
normal: weißes Icon
pressed: blaues Icon
released: weißes Icon
http://doc.qt.io/qt-5/qpushbutton.html
Doku zu QIcon:
http://doc.qt.io/qt-5/qicon.html
Ich hab nichts Außergewöhnliches versucht, lediglich die Methode AddFile benutzt.
http://doc.qt.io/qt-5/qicon.html#addFile
Ich füge einfach Bilder von der lokalen Platte zu meinem QIcon-Objekt und setze die Modi und States entsprechend. Die Bilder werden gefunden also die Datei-Pfade sind valide. Nur erreiche ich, egal in welcher wilden Konstellation, niemals das gewünschte Verhalten des Buttons.
normal: weißes Icon
pressed: blaues Icon
released: weißes Icon
@Madmartigan:
Die Zustände, welche Du abbilden willst, sind nicht in QIcon::Mode und QIcon::State enthalten. Daher funktioniert das nicht. Z.B. ändert er das Pixmap bei enable/disable oder focus-in/out.
An Deine Zustände kommst Du mit Stylesheets ran (QPushButton::pressed {background-image:url(...)}), oder halt klassisch per Signal/Slot im Code.
Die Zustände, welche Du abbilden willst, sind nicht in QIcon::Mode und QIcon::State enthalten. Daher funktioniert das nicht. Z.B. ändert er das Pixmap bei enable/disable oder focus-in/out.
An Deine Zustände kommst Du mit Stylesheets ran (QPushButton::pressed {background-image:url(...)}), oder halt klassisch per Signal/Slot im Code.
- Madmartigan
- User
- Beiträge: 200
- Registriert: Donnerstag 18. Juli 2013, 07:59
- Wohnort: Berlin
Hi jerch,
danke für deine Antwort.
Ich will natürlich vermeiden, für jeden Button ein separates StyleSheet definieren zu müssen. Ich verstehe nicht ganz, wieso dieses Standard-Verhalten eines Buttons von Qt nicht abgebildet wird. Ein separates Icon für Checked ist ja möglich, für Pressed allerdings nicht.
Nunja, meine Lösung war nun eine eigene Button-Klasse zu erstellen, die von QPushButton erbt und die entsprechende Icon-Funktionalität implementiert.
danke für deine Antwort.
Ich will natürlich vermeiden, für jeden Button ein separates StyleSheet definieren zu müssen. Ich verstehe nicht ganz, wieso dieses Standard-Verhalten eines Buttons von Qt nicht abgebildet wird. Ein separates Icon für Checked ist ja möglich, für Pressed allerdings nicht.
Nunja, meine Lösung war nun eine eigene Button-Klasse zu erstellen, die von QPushButton erbt und die entsprechende Icon-Funktionalität implementiert.