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();
}
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.cppmingw32-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