Pointer zum MainWindow oder QApplication?

Alles rund um die Programmierung mit Qt
Antworten
C_R
Beiträge: 129
Registriert: 25. April 2007 15:12

Pointer zum MainWindow oder QApplication?

Beitrag von C_R »

Hallo,

ich bräuchte Informationen von einer Klasse mehrere Hierarchiebenen über der Klasse, die diese Daten benötigt. Gibt es einen globalen Pointer auf MainWindow oder QApplication->MainWindow oder so etwas?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
C_R
Beiträge: 129
Registriert: 25. April 2007 15:12

Beitrag von C_R »

Hm ja,

Code: Alles auswählen

QString globalSettingsFile = qobject_cast<TabWidget*>(qobject_cast<MainWindow*>(QApplication::allWidgets()[0])->rightPane)->getXmlPath();
Bringt aber nen segmenation fault. Macht man das anders? Ist ja kein Beispiel angegeben.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Da sind so viele casts die schief gehen könnten und Du wunderst Dich dass es nicht geht? :)
Mach mal alles einzeln und testen auf != 0 dann siehst du wesentlich leichter wo der Fehler ist.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
C_R
Beiträge: 129
Registriert: 25. April 2007 15:12

Beitrag von C_R »

nagut das MainWindow war nich list[0] sondern list[23]. Kann man einem Widget ne ID übergeben? Bzw. siehst du eine andere Möglichkeit, das widget genau zu bestimmen, abgesehen vom windowTitle?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
C_R
Beiträge: 129
Registriert: 25. April 2007 15:12

Beitrag von C_R »

Danke, funktioniert allerdings nicht. Zumindest nicht so, wie ich es vorhab:

Code: Alles auswählen

QMainWindow *mainwin = QApplication::instance()->findChild<QMainWindow *>("mainWin");
Endet in einem segmentation fault. objectname ist gesetzt.
C_R
Beiträge: 129
Registriert: 25. April 2007 15:12

Beitrag von C_R »

QApplication scheint auch kein QObject zu sein.

edit:
ich machs nun doch über allWidgets() (und objectName anstelle des WindowTitles)
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

C_R hat geschrieben:QApplication scheint auch kein QObject zu sein.
Ich glaube Du solltest erst überlegen bevor Du was schreibst...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
C_R
Beiträge: 129
Registriert: 25. April 2007 15:12

Beitrag von C_R »

Sorry, ich weiss, dass QApplication nen QObject ist. Ich wollte damit sagen, dass der Compiler bei mir meint, dass appendChild() "not an aggregate member of QCoreApplication" ist. Hab mich schlecht ausgedrückt, bezog sich auf den Post davor.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Benutzt Du msvc6 oder warum nimmst du nicht findChildren ?

Code: Alles auswählen

qApp->findChildren<QMainWindow *>()
Falls Du dein MeinWindow "mainWin" genannt hast geht natürlich auch

Code: Alles auswählen

qApp->findChildren<QMainWindow *>("mainWin")
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
C_R
Beiträge: 129
Registriert: 25. April 2007 15:12

Beitrag von C_R »

g++

Aber ja, findChildren wäre wohl die bessere wahl, danke.
Das Problem scheint ja bei mir dein qApp zu sein.

Code: Alles auswählen

QApplication::instance()->findChildren<QMainWindow *>().size()
liefert ebenfalls 0, mit "mainWin" (ja das is der Name) genauso.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wir es evtl. noch nicht angezeigt bzw. ist es noch nicht erstellt worden?
Schau mal was qApp->findChildren<QWidget *>().size() liefert.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
C_R
Beiträge: 129
Registriert: 25. April 2007 15:12

Beitrag von C_R »

hm auch Null.

Liegts doch am QApplication::instance() ??

Denn über QApplication::allWidgets() komm ich ja an das Widget in der gleichen Methode. Die Methode wird erst beim speichern aufgerufen, von daher sind die Widgets schon da.
Antworten