Je ne fais que commencer par Qt. Bien que je passe quelque temps dessus ce soir, j'ai du mal à déplacer mon code d'installation de l'interface utilisateur de main
dans sa propre classe.Déplacement du code d'interface utilisateur Qt vers une classe distincte
#include <QtGui>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QWidget *window = new QWidget;
QLabel *hw = new QLabel(QObject::tr("Hello World!"));
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(hw);
window->setLayout(layout);
window->show();
return app.exec();
}
J'ai essayé de faire ma propre classe et passer à window
mais courir dans des erreurs de compilation.
main.cpp:
#include <QtGui>
#include "hworld.h"
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QDialog *hWorld = new hWorld;
hWorld->show();
return app.exec();
}
hworld.h:
#ifndef HWORLD_H
#define HWORLD_H
#include <QtGui>
class hWorld : public QDialog {
Q_OBJECT
public:
hWorld(QWidget *parent = 0);
~hWorld();
private:
void setup();
};
#endif // HWORLD_H
hworld.cpp:
#include <QtGui>
#include "hworld.h"
hWorld :: hWorld(QWidget *parent) : QDialog(parent) {
setup();
}
hWorld :: ~hWorld() { }
void hWorld :: setup() {
QLabel *hw = new QLabel(QObject::tr("Hello World!"));
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(hw);
setLayout(layout);
setWindowTitle("Test App");
}
erreurs de compilation:
main.cpp: In function ‘int main(int, char**)’:
main.cpp:8: error: expected type-specifier before ‘hWorld’
main.cpp:8: error: cannot convert ‘int*’ to ‘QDialog*’ in initialization
main.cpp:8: error: expected ‘,’ or ‘;’ before ‘hWorld’
make: *** [main.o] Error 1
Changement main
, signifie que cette compile, mais je reçois une fenêtre vide (parce que les constructeurs ne les appelle pas?):
QDialog hWorld;
hWorld.show();
Merci. Oui, je l'ai changé en QDialog, mais j'ai codé le code ensemble à partir de divers exemples de code. J'ai fait les changements que vous avez suggérés et ça fonctionne maintenant. –
Pensé ainsi, et les deux fonctionnent réellement dans votre exemple de toute façon. Amusez-vous avec Qt, c'est un cadre très puissant et pratique! :-) – RedGlyph