Klasse innerhalb Klasse auf Methoden von Parent zugreifen?
Klasse innerhalb Klasse auf Methoden von Parent zugreifen?
Also ich habe eine geerbte Klasse von QWidget innerhalb einer geerbten Klasse von QMainWindow erzeugen lassen. Diese Klasse soll auf die Methoden von QMainWindow zugreifen. Wie geht das am besten? Ich glaube ich habe was in C++ verpasst.
Ich glaube das geht mit parent, aber die funktionieren nur mit Methoden von QWidget oder QMainWindow, aber nicht mit selbsterzeugten Methoden.
Ich glaube das geht mit parent, aber die funktionieren nur mit Methoden von QWidget oder QMainWindow, aber nicht mit selbsterzeugten Methoden.
Ein forward-declaration alleine bringt dich bei der Verwendung von parent() nicht wirklich weiter.
Du musst das QWidget, was parent() ja zurück liefert, erst noch casten. Dazu verwendest du am besten qobject_cast.
Du musst das QWidget, was parent() ja zurück liefert, erst noch casten. Dazu verwendest du am besten qobject_cast.
Code: Alles auswählen
MyMainWindow *w = qobject_cast<MyMainWindow *>(parent());
w->doSomethingReallySpecial( 127890446 );-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
komischerweise geht das ganze auch ohne cast?
also MainWindow statt QWidget und in elementinitialisierer doch QWidget
scheint bei mir problemlos zu funktionieren
Code: Alles auswählen
class Mmakros : public QWidget, private Ui::Macros {
Q_OBJECT
public:
Mmakros(MainWindow *parent = 0 , Qt::WFlags flags = 0);Code: Alles auswählen
Mmakros::Mmakros(MainWindow *parent, Qt::WFlags flags ): QWidget(parent, flags) {
getparent = parent;scheint bei mir problemlos zu funktionieren
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
pfid hat geschrieben:Habt nicht ihr mit dem QObject::parent() angefangen?
Da darf man das doch dann so annehmen, oder?Erster Post von forgoden hat geschrieben:Ich glaube das geht mit parent, aber die funktionieren nur mit Methoden von QWidget oder QMainWindow, aber nicht mit selbsterzeugten Methoden.
hm ich probier zwar mit cast aus aber im moment funktioniert es gar nicht. kenn mich mit casten leider nicht aus.
liefert immer so ein Fehler zurück:
error C2064: Ausdruck ergibt keine Funktion, die 0 Argumente übernimmt
muss mich mal damit befassen...
in meinem code eh durcheinander alles.
edit: Es klappt jetzt, aber nur in Methoden. Im Konstruktor funktioniert es nicht, was ich noch nicht verstehe.
Code: Alles auswählen
MainWindow *w = qobject_cast<MainWindow *>(parent());liefert immer so ein Fehler zurück:
error C2064: Ausdruck ergibt keine Funktion, die 0 Argumente übernimmt
muss mich mal damit befassen...
in meinem code eh durcheinander alles.
edit: Es klappt jetzt, aber nur in Methoden. Im Konstruktor funktioniert es nicht, was ich noch nicht verstehe.