GandalfMobil
Grünschnabel
Hallo Leute,
langsam stellt sich bei mir eine gewisse Frustration ein, weil ich jetzt schon seit mehreren Tagen an diesem Problem arbeite und irgendwie mich nur im Kreis dreh.
Also folgende Ausgangssituation:
- Mac OS X Tiger mit QT 4.0.1 Open Source mit dem Designer 4.0.1
- Alle Export Paths etc sind eingestellt und QT ist komplett richtig kompiliert und installiert worden nach /usr/local/Trolltech/QT 4.0.1/
Folgendes funktioniert ohne Probleme:
speichere dieses als main.cpp und mache dann
qmake -project
qmake
make
danach
open tutorial.app/
und schon läuft es, also würde ich sagen das die Bibliotheken und alles richtig installiert sind und qt eigentlich richtig kompiliert.
Nun wollte ich nicht eine ganze GUI mit Hand programmieren, sondern mit dem Designer. In der 3.0 Version gab es die Möglichkeit mit dem Designer ein ganzes Projekt zu erstellen, dass auch automatisch die main.cpp usw erzeugt hat. Das macht QT 4.0 die kostenlose Open Source Version scheinbar nicht mehr.
Ich starte den Designer und wähle Main Window aus. Dieses leere Fenster lasse ich so und speicher es ab unter File/Save Form as und nenne die Datei test.ui und speichere sie in dem Ordner ...../test ab.
Im Designer im Property Editor stehene folgende Informationen :
QObject : object Name : MainWindow
und im Object Inspector :
MainWindow (Obejct) : QMainWindow(class)
centralWidget(Object) : QWidget(class)
Nun gehe ich in die Shell und gehe in den Ordner test. Dort habe ich zur Zeit nur die eine test.ui die ja im XML Style gespeichert ist. Nun kann ich mit Hilfe von uic aus der UI Datei eine Header Datei machen:
uic -o test.h test.ui
Diese test.h sieht folgendermaßen aus:
nun brauche ich noch eine main.cpp Datei. Diese Datei habe ich aus dem Internet von Trolltech gefunden und die soll so aussehen:
Danach erstelle ich mit qmake -project das test.pro File
danach mit qmake das Makefile erzeugen und mit make kompilieren
wenn ich dann das Programm starte kommt ein leeres Fenster aber nicht in der Größe, das ich angegeben hatte. Auch wenn ich Buttons oder so hinzufüge, bleibt das Fenster immer leer. Auch wenn ich im Deisgner die Größe veränder, passiert nichts.
Nun ist meine Idee, dass der Fehler in der main.cpp liegt, weil ich da
QMainWindow widget;
aufrufe. QMainWindow ist doch der Klassenname und widget das Objektname. Nun habe ich anstall QMainWindow auch mal QWidget ausprobiert, ging aber auch nicht.
Ich habe auch schon sämtliche Dokumente von Trolltech gelesen, aber es läuft irgendwie nicht.
Hat jemand von euch vielleicht eine Idee ?
Viele Grüße von
Hauke
PS: Danke schonmal !
langsam stellt sich bei mir eine gewisse Frustration ein, weil ich jetzt schon seit mehreren Tagen an diesem Problem arbeite und irgendwie mich nur im Kreis dreh.
Also folgende Ausgangssituation:
- Mac OS X Tiger mit QT 4.0.1 Open Source mit dem Designer 4.0.1
- Alle Export Paths etc sind eingestellt und QT ist komplett richtig kompiliert und installiert worden nach /usr/local/Trolltech/QT 4.0.1/
Folgendes funktioniert ohne Probleme:
Code:
#include <QApplication>
#include <QPushButton>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QPushButton hello("Hello world!");
hello.resize(100, 30);
hello.show();
return app.exec();
}
speichere dieses als main.cpp und mache dann
qmake -project
qmake
make
danach
open tutorial.app/
und schon läuft es, also würde ich sagen das die Bibliotheken und alles richtig installiert sind und qt eigentlich richtig kompiliert.
Nun wollte ich nicht eine ganze GUI mit Hand programmieren, sondern mit dem Designer. In der 3.0 Version gab es die Möglichkeit mit dem Designer ein ganzes Projekt zu erstellen, dass auch automatisch die main.cpp usw erzeugt hat. Das macht QT 4.0 die kostenlose Open Source Version scheinbar nicht mehr.
Ich starte den Designer und wähle Main Window aus. Dieses leere Fenster lasse ich so und speicher es ab unter File/Save Form as und nenne die Datei test.ui und speichere sie in dem Ordner ...../test ab.
Im Designer im Property Editor stehene folgende Informationen :
QObject : object Name : MainWindow
und im Object Inspector :
MainWindow (Obejct) : QMainWindow(class)
centralWidget(Object) : QWidget(class)
Nun gehe ich in die Shell und gehe in den Ordner test. Dort habe ich zur Zeit nur die eine test.ui die ja im XML Style gespeichert ist. Nun kann ich mit Hilfe von uic aus der UI Datei eine Header Datei machen:
uic -o test.h test.ui
Diese test.h sieht folgendermaßen aus:
Code:
#ifndef TEST_H
#define TEST_H
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QMainWindow>
#include <QtGui/QWidget>
class Ui_MainWindow
{
public:
QWidget *centralWidget;
void setupUi(QMainWindow *MainWindow)
{
MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
MainWindow->resize(QSize(800, 600).expandedTo(MainWindow->minimumSizeHint()));
centralWidget = new QWidget(MainWindow);
centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
MainWindow->setCentralWidget(centralWidget);
retranslateUi(MainWindow);
QMetaObject::connectSlotsByName(MainWindow);
} // setupUi
void retranslateUi(QMainWindow *MainWindow)
{
MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0, QApplication::UnicodeUTF8));
Q_UNUSED(MainWindow);
} // retranslateUi
};
namespace Ui {
class MainWindow: public Ui_MainWindow {};
} // namespace Ui
#endif // TEST_H
nun brauche ich noch eine main.cpp Datei. Diese Datei habe ich aus dem Internet von Trolltech gefunden und die soll so aussehen:
Code:
#include <QApplication>
#include "test.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QMainWindow widget;
widget.show();
return app.exec();
}
Danach erstelle ich mit qmake -project das test.pro File
Code:
TEMPLATE = app
TARGET +=
DEPENDPATH += .
INCLUDEPATH += .
# Input
HEADERS += test.h
FORMS += test.ui
SOURCES += main.cpp
danach mit qmake das Makefile erzeugen und mit make kompilieren
wenn ich dann das Programm starte kommt ein leeres Fenster aber nicht in der Größe, das ich angegeben hatte. Auch wenn ich Buttons oder so hinzufüge, bleibt das Fenster immer leer. Auch wenn ich im Deisgner die Größe veränder, passiert nichts.
Nun ist meine Idee, dass der Fehler in der main.cpp liegt, weil ich da
QMainWindow widget;
aufrufe. QMainWindow ist doch der Klassenname und widget das Objektname. Nun habe ich anstall QMainWindow auch mal QWidget ausprobiert, ging aber auch nicht.
Ich habe auch schon sämtliche Dokumente von Trolltech gelesen, aber es läuft irgendwie nicht.
Hat jemand von euch vielleicht eine Idee ?
Viele Grüße von
Hauke
PS: Danke schonmal !