Seite 1 von 1

Signal nicht disconnected

Verfasst: 28. Januar 2009 18:06
von pospiech
Ich habe folgenden Code:

Code: Alles auswählen

	disconnect(widgetInputBeamImpl);
	widgetInputBeamImpl->setInputBeam(& InternalPhaseObject->InputBeam);
	// reconnect after Data Applied
	//connect(widgetInputBeamImpl, SIGNAL(inputBeamChanged()), this, SLOT(InputBeamChanged()));
Ich änder in einem widget die dort enthaltenen Daten. Diese schickt von sich aus immer ein Signal, das genau jetzt aber ignoriert werden soll.

Ich sehe aber, das trotzdem InputBeamChanged() aufgerufen wird:
AdvancedBeamShapingd.exe!widgetAdvancedComplexBeamView::OnRadioButtonChooseTransformation() Zeile 133 C++
> AdvancedBeamShapingd.exe!widgetAdvancedComplexBeamView::InputBeamChanged() Zeile 162 C++
AdvancedBeamShapingd.exe!widgetAdvancedComplexBeamView::qt_metacall(QMetaObject::Call _c=InvokeMetaMethod, int _id=8, void * * _a=0x0012b928) Zeile 95 + 0x8 Bytes C++
QtCored4.dll!QMetaObject::activate(QObject * sender=0x01984608, int from_signal_index=27, int to_signal_index=27, void * * argv=0x00000000) Zeile 3022 + 0x2b Bytes C++
QtCored4.dll!QMetaObject::activate(QObject * sender=0x01984608, const QMetaObject * m=0x0065f648, int local_signal_index=0, void * * argv=0x00000000) Zeile 3092 + 0x15 Bytes C++
AdvancedBeamShapingd.exe!widgetInputBeam::inputBeamChanged() Zeile 90 + 0x15 Bytes C++
AdvancedBeamShapingd.exe!widgetInputBeam::OnButtonCalculate() Zeile 130 C++
AdvancedBeamShapingd.exe!widgetInputBeam::setInputBeam(beamshapes * beam=0x01f01d00) Zeile 183 C++
AdvancedBeamShapingd.exe!widgetAdvancedComplexBeamView::setPhaseObject(PhaseObject * object=0x01f01a38) Zeile 175 C++
Warum?

Re: Signal nicht disconnected

Verfasst: 28. Januar 2009 18:40
von solarix
pospiech hat geschrieben:...
Warum?
Weil der Aufruf "disconnect(widgetInputBeamImpl);" nur auf

Code: Alles auswählen

bool QObject::disconnect ( const QObject * receiver, const char * method = 0 )
passt... da steht "receiver"... nicht "sender"... ausserdem wäre
http://doc.trolltech.com/4.4/qobject.html#blockSignals
einfacher, als ein disconnect() und erneuter connect()