QActions sollen unterschiedliche Bilder laden, wie geschickt implementieren?
-
Hallo Zusammen,
ich habe ein Menu mit 30 QActions. Bei jedem dieses QActions soll ein anderes Bild aus den Ressourcen in ein QLabel geladen werden. Das einfachste wäre natürlich 30 connects, 30 Methoden, aber das muss doch anders gehen
Ist es zum Beispiel möglich in einer Methode herauszufinden, durch welches Element die Methode ausgelöst wurde?Vielen Dank, Norbert
-
Hast du mal über Parameter nachgedacht? (sprich: Der Aufrufer teilt deiner Methode mit, welches Bild er geladen haben möchte)
PS: Und verwende doch bitte Thread-Titel, die etwas mit dem Problem zu tun haben
-
Nächsten Freitag hab ich keine Zeit...
Ansonsten geht sowas glaub ich über Event ID Ranges, muss man aber entsprechend selber dann anlegen, der Editor kann nur einzelne Eventmethoden anlegen. Auch kann das Übergebene Argument der Event Methode einen Hinweis auf den aufrufenden Event enthalten.
-
Vielen Dank für eure Ideen. Mit Parametern hatte ich es schon versucht, allerdings muss die Signatur von SIGNAL und SLOT gleich sein, wenn ich mich recht entsinne.
Somit habe ich zum Beispielconnect(ui.actionKapitel_2, SIGNAL(activated()), this, SLOT(viewKapitel(":/Kapitel/02_01.jpg")));
eingetragen, aber er kommt gar nicht in viewKapitel() rein.
Hast du einen Link für mich bezüglich Event ID Ranges und QT? Mir sagt das leider gar nichts.
-
Sauber wären 30 slots, oder anderes design (was machen die actions noch ausser das label umschalten?). Schneller ist das hier: QAction erbt von QObject, das kennt setProperty, damit kannst du dynamisch eine Property an deine QAction pappen ... zB PropPfadZurDatei. Im slot kannst du über sender() den Verursacher des Slotaufrufs finden, diese property auslesen und wenns kein QVariant(invalid) ist, haste den Pfad zur Datei. Den ins QLabel rein und feddich - dirty but works.
-
Eigentlich ist das ein Fall für QSignalMapper. Schau dir dazu mal die Doku an.
-
Danke, ich schaue es mir übers Wochenende mal an.