projekt erstellen bzw wo ist die main
projekt erstellen bzw wo ist die main
hallo,
ich habe mit dem designer ein fenster erstellt. habe es gespeichert unter test.ui.
was mach ich jetzt damit? wenn ich es compilieren will mit qmake -project, qmake und make erhalte ich den fehler das die main fehlt, was auch klar ist. Aber wie gehe ich weiter vor? wie erzeuge ich den die main? bzw was muss ich machen? ich würde mich freuen über ein paar hilfestellungen.
mfg
ich habe mit dem designer ein fenster erstellt. habe es gespeichert unter test.ui.
was mach ich jetzt damit? wenn ich es compilieren will mit qmake -project, qmake und make erhalte ich den fehler das die main fehlt, was auch klar ist. Aber wie gehe ich weiter vor? wie erzeuge ich den die main? bzw was muss ich machen? ich würde mich freuen über ein paar hilfestellungen.
mfg
-
methusalem
- Beiträge: 186
- Registriert: 11. August 2005 08:21
hi,
danke erstmal!
also hab mir das video angeschaut und genauso eine von mir erstellte testklasse compiliert, nur leider erhalte ich folgenden fehler denn ich nicht nachvolziehen kann:
main.cpp: In function `int qMain(int, char**)':
main.cpp:10: error: `MainWindow' is not a member of `Ui'
main.cpp:10: error: expected `;' before "ui"
main.cpp:11: error: `ui' undeclared (first use this function)
main.cpp:11: error: (Each undeclared identifier is reported only once for each f
unction it appears in.)
mingw32-make[1]: *** [release\main.o] Error 1
bei der main.cpp
#include "ui_test1.h"
#include <QtGui/QtGui>
int main(int argc,char *argv[]){
QApplication app(argc,argv);
app.setQuitOnLastWindowClosed(true);
QMainWindow *form = new QMainWindow;
Ui::MainWindow ui;
ui.setupUI(form);
form->show();
return app.exec();
}
gruß
danke erstmal!
also hab mir das video angeschaut und genauso eine von mir erstellte testklasse compiliert, nur leider erhalte ich folgenden fehler denn ich nicht nachvolziehen kann:
main.cpp: In function `int qMain(int, char**)':
main.cpp:10: error: `MainWindow' is not a member of `Ui'
main.cpp:10: error: expected `;' before "ui"
main.cpp:11: error: `ui' undeclared (first use this function)
main.cpp:11: error: (Each undeclared identifier is reported only once for each f
unction it appears in.)
mingw32-make[1]: *** [release\main.o] Error 1
bei der main.cpp
#include "ui_test1.h"
#include <QtGui/QtGui>
int main(int argc,char *argv[]){
QApplication app(argc,argv);
app.setQuitOnLastWindowClosed(true);
QMainWindow *form = new QMainWindow;
Ui::MainWindow ui;
ui.setupUI(form);
form->show();
return app.exec();
}
gruß
-
methusalem
- Beiträge: 186
- Registriert: 11. August 2005 08:21
Hier sagt dir der Compiler, das er MainWindow nicht kennt! Deine Klasse, die du mit Hilfe des Designers und make erstellt hast, hat ziemlich sicher einen anderen Namen!neo hat geschrieben:...Code: Alles auswählen
main.cpp: In function `int qMain(int, char**)': main.cpp:10: error: `MainWindow' is not a member of `Ui' main.cpp:10: error: expected `;' before "ui" main.cpp:11: error: `ui' undeclared (first use this function) main.cpp:11: error: (Each undeclared identifier is reported only once for each f unction it appears in.) mingw32-make[1]: *** [release\main.o] Error 1
Die Zeile Ui::MainWindow ui; muss so lauten:Code: Alles auswählen
bei der main.cpp #include "ui_test1.h" #include <QtGui/QtGui> int main(int argc,char *argv[]){ QApplication app(argc,argv); app.setQuitOnLastWindowClosed(true); QMainWindow *form = new QMainWindow; Ui::MainWindow ui; ui.setupUI(form); form->show(); return app.exec(); }
Code: Alles auswählen
Ui::XYZ ui;wobei XYZ der Klassenname deiner GUI Klasse ist.
Ich denke du solltest dich noch einmal ausführlich mit der QT Doku beschäftigen. Hier mal ein Link, der sich mit dem Thema beschäftigt:
http://doc.trolltech.com/4.1/designer-u ... onent.html
Das Thema hatten wir gestern erst noch im Forum:
http://www.qtforum.de/forum/viewtopic.php?t=1349
Martin
hallo,
ich verstehe es nicht so ganz. meine main habe ich jetzt darauf geändert, weil in der ui_test1.h steht die klasse ui_dialog:
aber ich erhalte trotzdem noch einen fehler:
ich glaub ich bin ein wenig schwer von begriff!!
danke schau ich mir direkt mal an
gruß
ich verstehe es nicht so ganz. meine main habe ich jetzt darauf geändert, weil in der ui_test1.h steht die klasse ui_dialog:
Code: Alles auswählen
#include "ui_test1.h"
#include <QtGui/QtGui>
int main(int argc,char *argv[]){
QApplication app(argc,argv);
app.setQuitOnLastWindowClosed(true);
QMainWindow *form = new QMainWindow;
[b]Ui::Ui_Dialog ui;[/b]
ui.setupUI(form);
form->show();
return app.exec();
}
Code: Alles auswählen
main.cpp: In function `int qMain(int, char**)':
main.cpp:10: error: `Ui_Dialog' is not a member of `Ui'
main.cpp:10: error: expected `;' before "ui"
main.cpp:11: error: `ui' undeclared (first use this function)
main.cpp:11: error: (Each undeclared identifier is reported only once for each f
unction it appears in.)
mingw32-make[1]: *** [release\main.o] Error 1Ich denke du solltest dich noch einmal ausführlich mit der QT Doku beschäftigen. Hier mal ein Link, der sich mit dem Thema beschäftigt:
http://doc.trolltech.com/4.1/designer-u ... onent.html
Das Thema hatten wir gestern erst noch im Forum:
http://www.qtforum.de/forum/viewtopic.php?t=1349
danke schau ich mir direkt mal an
gruß
nochmal ich 
der inhalt der ui_test.h
der inhalt der ui_test.h
Code: Alles auswählen
#ifndef UI_TEST1_H
#define UI_TEST1_H
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QDialog>
#include <QtGui/QHBoxLayout>
#include <QtGui/QPushButton>
#include <QtGui/QSpacerItem>
#include <QtGui/QWidget>
class Ui_Dialog
{
public:
QWidget *layoutWidget;
QHBoxLayout *hboxLayout;
QSpacerItem *spacerItem;
QPushButton *okButton;
QPushButton *cancelButton;
void setupUi(QDialog *Dialog)
{
Dialog->setObjectName(QString::fromUtf8("Dialog"));
Dialog->resize(QSize(400, 300).expandedTo(Dialog->minimumSizeHint()));
layoutWidget = new QWidget(Dialog);
layoutWidget->setObjectName(QString::fromUtf8("layoutWidget"));
layoutWidget->setGeometry(QRect(20, 250, 351, 33));
hboxLayout = new QHBoxLayout(layoutWidget);
hboxLayout->setSpacing(6);
hboxLayout->setMargin(0);
hboxLayout->setObjectName(QString::fromUtf8("hboxLayout"));
spacerItem = new QSpacerItem(131, 31, QSizePolicy::Expanding, QSizePolicy::Minimum);
hboxLayout->addItem(spacerItem);
okButton = new QPushButton(layoutWidget);
okButton->setObjectName(QString::fromUtf8("okButton"));
hboxLayout->addWidget(okButton);
cancelButton = new QPushButton(layoutWidget);
cancelButton->setObjectName(QString::fromUtf8("cancelButton"));
hboxLayout->addWidget(cancelButton);
retranslateUi(Dialog);
QObject::connect(okButton, SIGNAL(clicked()), Dialog, SLOT(accept()));
QObject::connect(cancelButton, SIGNAL(clicked()), Dialog, SLOT(reject()));
QMetaObject::connectSlotsByName(Dialog);
} // setupUi
void retranslateUi(QDialog *Dialog)
{
Dialog->setWindowTitle(QApplication::translate("Dialog", "Dialog", 0, QApplication::UnicodeUTF8));
okButton->setText(QApplication::translate("Dialog", "OK", 0, QApplication::UnicodeUTF8));
cancelButton->setText(QApplication::translate("Dialog", "Cancel", 0, QApplication::UnicodeUTF8));
Q_UNUSED(Dialog);
} // retranslateUi
};
namespace Ui {
class Dialog: public Ui_Dialog {};
} // namespace Ui
#endif // UI_TEST1_H
-
methusalem
- Beiträge: 186
- Registriert: 11. August 2005 08:21
-
methusalem
- Beiträge: 186
- Registriert: 11. August 2005 08:21
Code: Alles auswählen
namespace Ui {
class Dialog: public Ui_Dialog {};
} // namespace Ui Martin
hi,
also hab es geändert: folgender fehler:
habe die klasse umbenannt in meinwindow!! deshalb der andere name!
gruß
also hab es geändert: folgender fehler:
Code: Alles auswählen
main.cpp: In function `int qMain(int, char**)':
main.cpp:11: error: 'class Ui::meinwindow' has no member named 'setupUI'
mingw32-make[1]: *** [release\main.o] Error 1
mingw32-make[1]: Leaving directory `C:/Dokumente und Einstellungen/tifo/Desktop/gruß
-
methusalem
- Beiträge: 186
- Registriert: 11. August 2005 08:21
Moin,
1.) Bevor man etwas umbennt, erstmal alles so lassen wie es ist und damit zum Ziel kommen. Danach kann man das immernoch ändern.
2.) Wenn du auf nummer sicher gehen willst, dann geh in den Designer und ändere dort den Namen des Objektes. Daraus wird nämlich der Klassenname erstellt. Dann kannst du sicher sein, das auch alle Stellen mit angepasst wurden. Dein Objekt hieß vorher Dialog und soll nun meinwindow heißen. Das änderst du im Designer.
Speicher dies ab. Mach danach ein make clean und dann ein make. Danach sollte es geklappt haben ...
1.) Bevor man etwas umbennt, erstmal alles so lassen wie es ist und damit zum Ziel kommen. Danach kann man das immernoch ändern.
2.) Wenn du auf nummer sicher gehen willst, dann geh in den Designer und ändere dort den Namen des Objektes. Daraus wird nämlich der Klassenname erstellt. Dann kannst du sicher sein, das auch alle Stellen mit angepasst wurden. Dein Objekt hieß vorher Dialog und soll nun meinwindow heißen. Das änderst du im Designer.
Speicher dies ab. Mach danach ein make clean und dann ein make. Danach sollte es geklappt haben ...
Martin
-
methusalem
- Beiträge: 186
- Registriert: 11. August 2005 08:21
Ein Slot ist eine Funktion, die durch ein Signal oder direkt aufgerufen wird. Das funktioniert im Grunde genauso wie vorher. Einziger, aber großer Unterschied ist, das man sie jetzt selbst als Slot deklarieren muss und nicht mehr einfach Funktionen überschreibt, die schon in der Implementierungsdatei als Slot definiert sind.neo hat geschrieben:ich kenn das slot system so, aus qt3, das man selber slots deklarieren kann und zu den slots dann funktionen schreiben kann. wie geht das hier?