[Anfängerfrage]Mehrere Signals, ein Slot

Verschiedenes zu Qt
Antworten
candux
Beiträge: 2
Registriert: 26. Juni 2009 17:26

[Anfängerfrage]Mehrere Signals, ein Slot

Beitrag von candux »

Hallo,

ich arbeite mich gerade etwas in QT ein. Als IDE benutze ich QT Creator

In meinem Programm habe ich neun Buttons die alle den selben Slot auslösen sollen. In diesem Slot soll unterschieden werden können, welcher Button gedrückt wurde.

Wie löse ich dieses Problem am besten? Ich habe bereits versucht, bei den neun Connects der Signals mit dem Slot, dem Slot einen Parameter mitzugeben, dies geht aber anscheinend nicht.

Schon einmal vielen Dank für die Hilfe!

Gruß
David Weber
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Beitrag von -=Freaky=- »

im slot kannst du die funktion sender() benutzen.
http://doc.qtsoftware.com/4.5/qobject.html#sender

mfg,
julian
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

candux
Beiträge: 2
Registriert: 26. Juni 2009 17:26

Beitrag von candux »

Vielen Dank für eure Antworten!

Ich habe versucht den QSignalMapper einzubauen, allerdings bekomme ich ich bei dem hinzufügen einer Connection immer sofort einen Speicherzugriffsfehler.

Hier ist der Backtrace:

Code: Alles auswählen

#0  0x00007f00068d5791 in QObject::connect () from /usr/lib/libQtCore.so.4
#1  0x00000000004041b8 in Wins_Gui::insertButtons (this=0x7fff1b3044f0) at wins_gui.cpp:37
#2  0x0000000000403de8 in Wins_Gui (this=0x7fff1b3044f0, parent=0x0) at wins_gui.cpp:12
#3  0x0000000000403b8b in main (argc=1, argv=0x7fff1b304648) at main.cpp:7
System ist ein aktuelles Archlinux System:
QT: 4.5.2
gcc: 4.4.0

Wisst ihr wo der Fehler liegt oder ist das ein Bug in den aktuellen Paketen?
Anbei sind meine Projektdateien.
Dateianhänge
3wins.zip
(222.79 KiB) 116-mal heruntergeladen
Zuletzt geändert von candux am 26. Juni 2009 22:20, insgesamt 1-mal geändert.
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Beitrag von -=Freaky=- »

solarix hat geschrieben:oder besser: QSignalMapper: http://doc.trolltech.com/4.5/qsignalmapper.html
warum sollte man den verwenden, das versteh ich nicht so ganz.
damit koennte man zusaetzlich parameter mitgeben, aber die waeren ja nur noetig, wenn es QObject::sender() nicht gaebe.

mfg,
julian
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

warum sollte man den verwenden, das versteh ich nicht so ganz.
das ist kein sauberes OOP..
allerdings bekomme ich ich bei dem hinzufügen einer Connection immer sofort einen Speicherzugriffsfehler.
Kein wunder... du erstellst die Instanz NACHDEM du sie connectest.. :wink:

Code: Alles auswählen

 this->insertButtons(); // connect buttonGroup....
 buttonGroup = new QSignalMapper(this);
Zuletzt geändert von solarix am 27. Juni 2009 12:05, insgesamt 1-mal geändert.
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Beitrag von -=Freaky=- »

solarix hat geschrieben:
warum sollte man den verwenden, das versteh ich nicht so ganz.
das ist kein sauberes OOP...
nagut, da magst du wohl recht haben.
find ich aber nicht allzu schlimm zu nutzen, und die trolls werdens aus gruenden eingebaut haben.
wie auch immer ...

mfg,
julian
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Weil es sauberer ist.
Weil es von Qt empfehlen wird.
Weil es einfacher ist.
Antworten