Qt Creator: Fenster und Oberfläche verbinden
-
Hi,
ich versuche gerade eine mit Qt Designer erstellte Oberfläche (meinGUI.ui) anzeigen zu lassen.
Dazu habe ich die main.cpp Datei so bearbeitet, dass die Oberfläche aus dem Formular meinGUI.ui angezeigt werden sollte.Die main.cpp Datei:
#include "mainwindow.h" #include <QApplication> #include "ui_meinGUI.h" int main(int argc, char *argv[]) { QApplication meinFormular(argc, argv); //ein neues Hauptfenster erzeugen QMainWindow* meinFenster = new QMainWindow(); //eine Instanz der Oberfläche erzeugen MainWindow meinGUI; //das Fenster und die Oberfläche verbinden meinGUI.setupUi(meinFenster);//no member named 'setupUi' in 'MainWindow' //den Dialog anzeigen meinFenster->show(); return meinFormular.exec(); }
Jedoch bekomme ich bei
meinGUI.setupUi(meinFenster);
Die Fehlermeldung:
no member named 'setupUi' in 'MainWindow'
Diese Anweisung sollte eigentlich die Oberfläche und den Container verbinden.
Dazu muss die Methode setupUi() der Instanz der Klasse mit der Oberfläche aufgerufen werden.
Also die Instanz meinGUI.
"setupUi" ist kein Element von "MainWindow"
"setupUi" ist auch kein Element von "QMainWindow"Ich bin sehr dankbar über jede Art von Unterstützung.
-
Die Funktion ist Member der generierten Klasse.
Wenn du die Oberfläche direkt im Creator generierst, statt den Umweg über den externen Designer zu gehen, wird es leichter.
-
Der Designer ist hier wirklich ein unnötiger Umweg.
Ich frage mich hier nur, ob "meinGUI" vielleicht Instanz einer anderen Klasse sein sollte.
Oder besser gefragt, zu welcher Klasse gehört die Methode setupUi()?
Letztlich ist hier nur das Ziel, einmal eine externe ui Datei einzubinden.
-
zu welcher Klasse gehört die Methode setupUi()?
@manni66 sagte in Qt Creator: Fenster und Oberfläche verbinden:
Die Funktion ist Member der generierten Klasse.
-
Was ist hier denn die generierte Klasse?
-
@theAnfänger77 sagte in Qt Creator: Fenster und Oberfläche verbinden:
Was ist hier denn die generierte Klasse?
Die die der UIC aus der uni-Datei generiert.
-
Also diese Klasse Ui_Dialog
Vielen Dank!So geht es:
#include "mainwindow.h" #include <QApplication> #include "ui_meinGUI.h" int main(int argc, char *argv[]) { QApplication meinFormular(argc, argv); //ein neues Hauptfenster erzeugen //QMainWindow* meinFenster = new QMainWindow(); QDialog* meinFenster = new QDialog(); //eine Instanz der Oberfläche erzeugen Ui_Dialog meinGUI; //das Fenster und die Oberfläche verbinden meinGUI.setupUi(meinFenster); //den Dialog anzeigen meinFenster->show(); return meinFormular.exec(); }
-
So geht es zwar, so ist es aber nicht gedacht oder für eine echte Anwendung sinnvoll.
Du sollst eine Klasse von QDialog ableiten, die ein Member der UI-Klasse hat.
-
"mainwindow.h" brauche ich auch nicht mehr.
Würde dann so aussehen:#include <QApplication> #include <ui_meinGUI.h> class abgeleiteteKlasse : public Ui_Dialog{}; int main(int argc, char *argv[]) { QApplication meinFormular(argc, argv); //ein neues Hauptfenster erzeugen QDialog* meinFenster = new QDialog(); //eine Instanz der Oberfläche erzeugen abgeleiteteKlasse meinGUI; //das Fenster und die Oberfläche verbinden meinGUI.setupUi(meinFenster); //den Dialog anzeigen meinFenster->show(); return meinFormular.exec(); }
-
@theAnfänger77 Das ist ja nett und schön wenn man weiß wie es funktioniert. Nur für Production und wartungsfreundlichen Code ist das nichts.