ich habe ein Programm, in dem aus einer Klasse heraus ein Signal eines Objekts mit einem Slot eines anderen Unterobjekts verbunden wird. Die Verbindung funktioniert noch, da gibt es keinen Fehler. Wenn das Signal dann später aber ausgelöst wird, stürzt das Programm sofort ab. Es wird weder der Code nach dem emit, noch der Code in der Slot-Methode aufgerufen. Es handelt sich hier um einen Debug-Build meines Programms, erstellt mit Qt Creator 2.0.1 und Qt 4.3.1 unter OpenSUSE 10.3 (letztere beide sind Projektanforderungen und können nicht geändert werden).
Die Verbindung sieht etwa so aus:
Code: Alles auswählen
class Objects {
public:
static MyStaticObject s_sender;
}
QObject::connect(&Objects::s_sender, SIGNAL(statusHasChanged(unsigned int, bool*)), SLOT(onStatusHasChanged(unsigned int, bool*)));Code: Alles auswählen
// SIGNAL 0
void MyClass::statusHasChanged(unsigned int _t1, bool * _t2)
{
void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)), const_cast<void*>(reinterpret_cast<const void*>(&_t2)) };
QMetaObject::activate(this, &staticMetaObject, 0, 1, _a);
}Der Fehler tritt in der Zeile mit "QMetaObject" auf. Was ist da passiert? Ich kann hier keinen Fehler erkennen.
(Edit: Beitrag aktualisiert und verkürzt.)