Probleme beim Einbinden von Qt Designer Dateien

Alles rund um die Programmierung mit Qt
Antworten
german_beaver
Beiträge: 4
Registriert: 15. August 2005 21:05

Probleme beim Einbinden von Qt Designer Dateien

Beitrag von german_beaver »

Hallo!
Vor einigen Tagen habe ich angefangen, mich mit Qt auseinanderzusetzen. Bisher habe ich nur einfache Konsolenprogramme in C++ geschrieben. Ich habe auch schon erfolgreich diese einfachen Lernprogramme aus dem offiziellen Qt Tutorial geschrieben und kompiliert. Als ich aber versucht habe, eine mit Qt Designer erstellte ui-Datei in einem Programm zu verwenden, hatte ich Probleme beim Kompilieren. Inzwischen glaube ich, dass ich irgendwo einen Denkfehler habe, denn ich habe inzwischen schon versucht, die Beispiele aus dem Qt Designer Manual zu kompilieren, was mir aber nicht gelungen ist. Qt Tutorials und Qt Designer Manual habe ich zwar schon komplett durchgelesen, aber noch keine Lösung für mein Problem gefunden.

Ich verwende Qt4 Windows Open Source Edition mit MinGw Compiler.
Mal angenommen, ich habe ein sehr einfaches Dialog erstellt, welches unter dem Namen "dialog.ui" im Verzeichnis "MyProgram" abgespeichert ist. Ferner habe ich meine "main.cpp" im gleichen Verzeichnis. Die hat folgenden Inhalt:

Code: Alles auswählen

#include "dialog.h"
#include <QApplication>

int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
        QDialog *window = new QDialog;
        Ui::ImageDialog ui;
        ui.setupUi(window);

        window->show();
        return app.exec();
    }
Diesen Code habe ich direkt aus dem Qt Designer Tutorial übernommen und zwar aus dem Abschnitt "Using a Component in Your Application/The Direct Approach". Nur der Name "dialog.h" ist an mein Programm angepasst. Nun gebe ich in der Kommandozeile aus diesem Verzeichnis folgenden Befehl ein:
uic -o dialog.h dialog.ui
Es wird dann die Header-Datei "dialog.h" in diesem Verzeichnis erstellt. Nun wird noch eingegeben:
qmake -project
Jetzt habe ich noch die Datei "MyProgram.pro", die den folgenden Inhalt hat:

Code: Alles auswählen

######################################################################
# Automatically generated by qmake (2.00a) Mo 15. Aug 19:48:58 2005
######################################################################

TEMPLATE = app
DEPENDPATH += .
INCLUDEPATH += .

# Input
HEADERS += dialog.h
FORMS += dialog.ui
SOURCES += main.cpp
Schließlich wird mit "make" kompiliert. Dabei habe ich immer den gleichen compile time Fehler:
mingw32-make -f Makefile.Release
mingw32-make[1]: Entering directory `E:/projects/Qt/MyProgram'
g++ -c -O2 -O2 -frtti -fexceptions -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_D
LL -DQT_NO_DEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN
-I"D:/Qt/4.0.0/include/QtGui" -I"D:/Qt/4.0.0/include/QtCore" -I"D:/Qt/4.0.0/inc
lude" -I"." -I"D:/Qt/4.0.0/include/ActiveQt" -I"release" -I"." -I"D:\Qt\4.0.0\mk
specs\win32-g++" -o release\main.o main.cpp
main.cpp: In function `int qMain(int, char**)':
main.cpp:8: error: `ImageDialog' is not a member of `Ui'
main.cpp:8: error: expected `;' before "ui"
main.cpp:9: error: `ui' undeclared (first use this function)
main.cpp:9: error: (Each undeclared identifier is reported only once for each function it appears in.)
mingw32-make[1]: *** [release\main.o] Error 1
mingw32-make[1]: Leaving directory `E:/projects/Qt/MyProgram'
mingw32-make: *** [release] Error 2

Es liegt also wohl an dieser Zeile:
Ui::ImageDialog ui;
Der Syntax erscheint mir aber recht komisch. Normalerweise wäre das ja die Implementierung einer member function, aber hier wird es in einem anderen Kontext verwendet. Genauso steht dieser Code aber auch im Qt Designer Manual drin.
Ich hoffe, jemand kann mir erklären, was ich dabei falsch mache oder was ich nicht verstehe. Die HTML-Hilfe von Qt hat mir bisher nur wenig geholfen, da sie zum Teil schon gewisse Grundkentnisse über Qt voraussetzt. In diesem Forum habe ich auch keine zu meinem Problem passenden Topics finden können.

Vielen Dank im Voraus ;)
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Ui::Name ist der Name den du im dessiganer vegben hast. schicke mal die.ui datei.
german_beaver
Beiträge: 4
Registriert: 15. August 2005 21:05

Beitrag von german_beaver »

BartSimpson
Ui::Name ist der Name den du im dessiganer vegben hast.
Genau, das war es! :D "ImageDialog" war der Name von einer im Qt Designer Tutorial erstellten ui-Datei und meine Datei hat "dialog.ui" geheißen! Ich dachte, "ImageDialog" wäre eine member function von Qt's Klassen. Auf jeden Fall, vielen Dank für Deine Hilfe, das hat mir wirklich sehr geholfen! :wink:
Antworten