Slot wird in einem fremden Objekt nicht ausgelöst

Verschiedenes zu Qt
Antworten
Christoph_BS
Beiträge: 11
Registriert: 6. April 2010 11:21

Slot wird in einem fremden Objekt nicht ausgelöst

Beitrag 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);
...
}
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag 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..
Christoph_BS
Beiträge: 11
Registriert: 6. April 2010 11:21

Beitrag 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.
Antworten