Qt - Child aus anderer Datei aufrufen - Absturz bei Ausführung
-
Hallo Community,
folgendes Problem. Ich habe ein Hauptfenster und eine Toolbar, die bisher in einer Datei hintereinander ausgeführt wurden und hier auch funktioniert haben. Nun wollte ich besagte Toolbar (die nichts anderes als ein Widget mit Buttons ist) in eine andere Datei auslagern. Ich habe die Dateien Toolbar.cpp und Hauptfenster.cpp - beide mit ihren jeweiligen Headern. Die Kompilierung funktioniert. Hauptfenster ruft nun in einer eigenen Funktion (Hauptfenster::HFenster()) die FunktionToolbar(this)
auf. Die Funktion Toolbar beginnt mit den Zeilen
Toolbar::Toolbar(QMainWindow *parent):QWidget(parent)
Das Hauptfenster kennt natürlich die Funktion, sonst würde ja schon das Debuggen nicht funktionieren. Dieses funktioniert, doch sobald Toolbar(this) aufgerufen wird, also direkt zu Beginn, stürzt alles ab mit der Meldung:
Unbehandelte Ausnahme bei 0x6505872d (QtGuid4.dll) in Well-O-Mat.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0xcdcdcc64.
Visual Studio springt dabei in der Datei QWidget.h an die Stelle
inline bool QWidget::testAttribute(Qt::WidgetAttribute attribute) const { if (attribute < int(8*sizeof(uint))) ->->-> return data->widget_attributes & (1<<attribute); return testAttribute_helper(attribute); }
Ich bin Neuling in Qt und mein schlaues Buch, von dem ich nur abraten kann (C++ GUI mit QT4 von Jasmin Blanchet) gibt keine Infos dazu, bzw ich bin der Meinung, die vorhandenen umgesetzt zu haben.
Für den Fall dass der gegebene Code nicht reicht, gebe ich den Rest natürlich hinterher. Aber auch das generelle Vorgehen -> Parent und Child in 2 unterschiedlichen Dateien definieren <- würde mir reichen.
Grüße
-
Bitte poste relevanten Code. Der Qt-Code interessiert an dieser Stelle nicht die Bohne. Poste deinen Code. Die paar Zeilen die du uns zeigst sind außerhalb jeglichem Kontext und man kann nichtmal sagen wie die verwendet werden...
Die Funktion (komplett), in der du "Toolbar(this)" stehen hast wäre sicher ein guter Anfang, vllt. auch den Code der Funktionen, die du darin aufrufst.
-
Dieser Thread kann gelöscht werden. Die Lösung war eine nicht korrekt aufgerufene if-Schleife