QPixmap oder Bilder wechseln

Alles rund um die Programmierung mit Qt
Antworten
ConcordeLord
Beiträge: 14
Registriert: 9. Mai 2006 09:06

QPixmap oder Bilder wechseln

Beitrag von ConcordeLord »

Hallo,
habe ein kleines Problem, wahrscheinlich mal wieder mit dem SIGNAL-SLOT Mechanismus.
Will in meine Applikation eine Art Statusabfrage einbauen.
Der Einfachheit halber hab ich das erstmal mit Buttons probiert.
Das Bild habe ich in ein Label geladen. Nun soll bei Drücken des Buttons das Bild im Label geändert werden. Sozusagen der Status von OK auf Error oder umgedreht.

Hab mir den SIGNAL-SLOT so überlegt:
ist strak abstrahiert!!!

connect(Button, SIGNAL(clicked()), Label, SIGNAL(setPixmap(.."Ordner/Datei.*")));

Übersetzt wird alles richtig, es kommt keine Fehlermeldung, nur beim Drücken der Buttons wird das bild nicht geändert.

Habt ihr irgendwelche Ideen?

THX
hypolit
Beiträge: 15
Registriert: 28. Mai 2006 11:29

Beitrag von hypolit »

Müßte es nicht:

connect(Button, SIGNAL(clicked()), Label, SLOT(setPixmap(.."Ordner/Datei.*")));

heißen?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

im Slot können keine Parameter übergeben werden - wie sollte das funktionieren?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
uhu01
Beiträge: 150
Registriert: 10. Juli 2005 20:46

Beitrag von uhu01 »

Hy!

Ja, du kannst keine Konstanten übergeben per Slot.
Du musst entweder ein passendes Signal finden das die Daten übergibt die der Slot benötigt, oder ein solches Signal selbst Programmieren, oder einen Slot Programmieren der ein Signal auslöst wie du es benötigst.

Je nach dem was leichter/passender ist.

mfg
uhu01
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

und bei einem label must du noch ein processEvents nachschieben!!
Oder du installidert ein Eventfilter:)
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

BartSimpson hat geschrieben:und bei einem label must du noch ein processEvents nachschieben!!
Wieso das denn? Ein Button emitiert ein Signal und der passende Slot ersetzt das Pixmap. Mehr braucht es da nicht.
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Wirts ja sehen.:)
das selbe wenn du bei einem QLabel den text später ändern möchtest.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Zufällig hab ich das diese Woche erst programmiert. Ein Klick auf einen Button vertauscht die Pixmaps und ToolTips von zwei QLabel. Ohne processEvents :-) Vertauschen ist vielleicht zuviel gesagt, es werden Pixmaps und Texte gesetzt.
ConcordeLord
Beiträge: 14
Registriert: 9. Mai 2006 09:06

Beitrag von ConcordeLord »

Genau das will ich machen, in einem Label die Bilder ersetzen, aber der machts einfach nicht. Ist ja eigentlich auch nur zum Testen, aber wenigstens das sollte funktionieren. Könnte mir noch jemand n Tipp zum Signal-Slot geben, oder auf was ich noch gucken müsste.
Ist meine Vermutung denn richtig, dass nach dem "setPixmap("../Ordner/Datei.*") stehen muss?

THX
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Also ich habe in meiner Klasse für die Pixmaps Membervariablen angelegt:
QPixmap pmBild1;
QPixmap pmBild2;

im Konstruktor definiere ich die dann (Bilder in der Resource):
pmBild1 = QPixmap(QString::fromUtf8(":/images/32x32/Bild1.png"));
pmBild2 = QPixmap(QString::fromUtf8(":/images/32x32/Bild2.png"));

Die Reihenfolge der Pixmaps, bei mir sind es mehr als 2, steht in einer QList. Im Slot für den clicked vom Button wird die Reihefolge in der QList geändert und danach eine Methode aufgerufen, die die QList abarbeitet und per switch werden dann Pixmap und Text zugewiesen:
label->setPixmap(pmBild1);
label->setToolTip(tr("Bild1"));
Antworten