Seite 1 von 1

Slot wird in einem fremden Objekt nicht ausgelöst

Verfasst: 12. Juli 2010 11:33
von Christoph_BS
Hallo Leute,

ich habe möchte, dass das Anklicken einer Checkbox in einem anderen Objekt eine Methode auslöst.
Es klappt jedoch bisher nur, dass eine Methode in dem eigenen Objekt, in dem die ui.setupUi(this); - Methode aufgerufen wird ausgelöst wird.

//Konstruktor der Klasse, in dem es funktioniert:

Code: Alles auswählen

ui.setupUi(this);
    
//Logger-Objekt	
m_pGuiLogger = new CGuiLogger();
	 
//Checkbox Klicks auswerten und an GuiLogger-Klasse weitergeben
//Die SetDebugEnable(bool) wird nicht aufgerufen
	connect(ui.checkBox_DEBUG, SIGNAL(stateChanged(int)), m_pGuiLogger,SLOT(SetDebugEnable(true)));
//Die  SetActivateViewer wird aufgerufen
	connect(ui.checkBox_DEBUG, SIGNAL(stateChanged(int)), this,SLOT(SetActivateViewer()));


Die GuiLogger-Klasse sieht folgendermaßen aus:

Code: Alles auswählen

class CGuiLogger : public QWidget,                    	public IModulLogger  
{ 
	Q_OBJECT
  ...
public slots:
      void SetDebugEnable (bool bDebugEnable);
...
}

Verfasst: 12. Juli 2010 12:48
von solarix
connect(ui.checkBox_DEBUG, SIGNAL(stateChanged(int)), m_pGuiLogger,SLOT(SetDebugEnable(true)));
Das geht nicht (keine Variabeln und keine Konstanten in SLOT(..)! Aber du kannst das abbilden mit QSignalMapper..

Verfasst: 12. Juli 2010 13:26
von Christoph_BS
Ah natürlich,
vielen Dank
so ist es natürlich viel besser:

Code: Alles auswählen

connect(ui.checkBox_DEBUG, SIGNAL(stateChanged(int)), m_pGuiLogger,SLOT(SetDebugEnable(int)));
und die SetDebugEnable dann natürlich auch noch darauf einstellen. Mir war bis gerade nicht klar, dass bei der Signal/Slot-Architektur der Rückgabewert des Signals der Übergabewert des Slots ist. Habe ich was wichtiges gelernt.