Afficher une fenetre créée sous Qt Designer (v5.3.1 de Qt)
Résolu
hharchi9
Messages postés
693
Statut
Membre
-
sambia39 Messages postés 610 Date d'inscription Statut Membre Dernière intervention -
sambia39 Messages postés 610 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je me suis lancé dans la programmation il y a peu (je suis l'un des nombreux tuto du site du zéro : https://openclassrooms.com/fr/courses/1894236-programmez-avec-le-langage-c/1901673-modelisez-ses-fenetres-avec-qt-designer
Je suis arrivé à l'étape de création d'une fenêtre avec Qt Designer mais le soucis c'est que je n'arrive pas à afficher cette fenêtre... En effet lors de la compilation j'ai des erreurs comme celle-ci :
C:\Users\Alan\Documents\Programmation\GUI\test 2\test2\FenCalculatrice.cpp:6: erreur : no matching function for call to 'Ui::FenCalculatrice::setupUi(FenCalculatrice* const)'
ui->setupUi(this);
^
J'utilise la version 5.3.1 de Qt et la version 3.1.2 de Qt Creator (j'utilise le Qt Designer directement depuis le Qt Creator). Je suis sous windows 7.
Je vous joins mes lignes de codes car il y a forcément une erreur quelque part (excusez-moi encore une fois mais je débute et mes recherches ne m'ont pas apporté de réponse, d'où ma démarche ici)
Le FenCalculatrice.h
#ifndef FENCALCULATRICE_H
#define FENCALCULATRICE_H
#include <QWidget>
namespace Ui
{
class FenCalculatrice;
}
class FenCalculatrice : public QWidget
{
Q_OBJECT
public:
explicit FenCalculatrice(QWidget *parent = 0);
~FenCalculatrice();
private:
Ui::FenCalculatrice *ui;
};
#endif // FENCALCULATRICE_H
Le FenCalculatrice.cpp
#include "FenCalculatrice.h"
#include "ui_FenCalculatrice.h"
FenCalculatrice::FenCalculatrice(QWidget *parent) : QWidget(parent), ui(new Ui::FenCalculatrice)
{
ui->setupUi(this);
}
FenCalculatrice::~FenCalculatrice()
{
delete ui;
}
Le main.cpp
#include <QApplication>
#include <QtWidgets>
#include "FenCalculatrice.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
FenCalculatrice fenetre;
fenetre.show();
return app.exec();
}
Je vous joins également le .pro :
QT+= widgets
QT+= widgets gui
QT+= core gui
SOURCES += \
main.cpp \
FenCalculatrice.cpp
HEADERS += \
FenPrincipale.h \
FenCalculatrice.h
FORMS += \
FenCalculatrice.ui
Merci d'avoir pris le temps de me lire et de vous pencher sur la question,
Cordialement,
hharchi9
Je me suis lancé dans la programmation il y a peu (je suis l'un des nombreux tuto du site du zéro : https://openclassrooms.com/fr/courses/1894236-programmez-avec-le-langage-c/1901673-modelisez-ses-fenetres-avec-qt-designer
Je suis arrivé à l'étape de création d'une fenêtre avec Qt Designer mais le soucis c'est que je n'arrive pas à afficher cette fenêtre... En effet lors de la compilation j'ai des erreurs comme celle-ci :
C:\Users\Alan\Documents\Programmation\GUI\test 2\test2\FenCalculatrice.cpp:6: erreur : no matching function for call to 'Ui::FenCalculatrice::setupUi(FenCalculatrice* const)'
ui->setupUi(this);
^
J'utilise la version 5.3.1 de Qt et la version 3.1.2 de Qt Creator (j'utilise le Qt Designer directement depuis le Qt Creator). Je suis sous windows 7.
Je vous joins mes lignes de codes car il y a forcément une erreur quelque part (excusez-moi encore une fois mais je débute et mes recherches ne m'ont pas apporté de réponse, d'où ma démarche ici)
Le FenCalculatrice.h
#ifndef FENCALCULATRICE_H
#define FENCALCULATRICE_H
#include <QWidget>
namespace Ui
{
class FenCalculatrice;
}
class FenCalculatrice : public QWidget
{
Q_OBJECT
public:
explicit FenCalculatrice(QWidget *parent = 0);
~FenCalculatrice();
private:
Ui::FenCalculatrice *ui;
};
#endif // FENCALCULATRICE_H
Le FenCalculatrice.cpp
#include "FenCalculatrice.h"
#include "ui_FenCalculatrice.h"
FenCalculatrice::FenCalculatrice(QWidget *parent) : QWidget(parent), ui(new Ui::FenCalculatrice)
{
ui->setupUi(this);
}
FenCalculatrice::~FenCalculatrice()
{
delete ui;
}
Le main.cpp
#include <QApplication>
#include <QtWidgets>
#include "FenCalculatrice.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
FenCalculatrice fenetre;
fenetre.show();
return app.exec();
}
Je vous joins également le .pro :
QT+= widgets
QT+= widgets gui
QT+= core gui
SOURCES += \
main.cpp \
FenCalculatrice.cpp
HEADERS += \
FenPrincipale.h \
FenCalculatrice.h
FORMS += \
FenCalculatrice.ui
Merci d'avoir pris le temps de me lire et de vous pencher sur la question,
Cordialement,
hharchi9
A voir également:
- Afficher une fenetre créée sous Qt Designer (v5.3.1 de Qt)
- Qt sdk - Télécharger - Langages
- Fenetre windows - Guide
- Fenêtre hors écran windows 11 - Guide
- Afficher appdata - Guide
- Fenetre de navigation privée - Guide
7 réponses
Bonjour
Personnellement je ne veux pas être désagréable même si je connais la réponse il est préférable d'allée la poser sur leur forum la questions directement. Je pense qu'ils seront plus aptes à te répondre.
Après c'est à toi d'en jugé.
Personnellement je ne veux pas être désagréable même si je connais la réponse il est préférable d'allée la poser sur leur forum la questions directement. Je pense qu'ils seront plus aptes à te répondre.
Après c'est à toi d'en jugé.
je sais bien, sauf qu'à chaque fois qu'ils font affaire à un tutoriel du site du zéro, et qu'ils sont bloqué la moindre des choses est de poser la question directement sur le forum en question au lieu de le faire ici et son problème est de type programmation le compilateur essaye d'appeller une fonction
Ui::FenCalculatrice::setupUi(FenCalculatrice* const)'qui me semble n'est pas définie , mal écrite, pas du tout écrite où existe pas -_- !
Merci du temps que vous m'accordez. Désolé sambia39, je ne pensais pas à mal et ne m'était pas poser de question en postant ici, toutes mes excuses donc.
Je précise que les codes sont données en tant que solution de l'exercice mais il me semble qu'ils utilisent une version antérieure d'où le fait que cela ne marche pas pour moi, mais mes recherches ne m'ont pas permis de trouver une solution.
Aussi, si tu avais trouvé une solution, je te saurais gré de la donner pour moi mais aussi pour d'autres qui pourrais rencontrer le même soucis.
Encore une fois désolé pour la gêne occasionnée, je ne pensais pas à mal...
Je précise que les codes sont données en tant que solution de l'exercice mais il me semble qu'ils utilisent une version antérieure d'où le fait que cela ne marche pas pour moi, mais mes recherches ne m'ont pas permis de trouver une solution.
Aussi, si tu avais trouvé une solution, je te saurais gré de la donner pour moi mais aussi pour d'autres qui pourrais rencontrer le même soucis.
Encore une fois désolé pour la gêne occasionnée, je ne pensais pas à mal...
C'est plutôt moi qui m'excuse je me suis égaré un peu.
Ceci dit ton problème est de type "programmation" le compilateur ne trouve pas une correspondance ou une de tes fonctions que tu as déclarée.
Dans mes souvenirs de Qt si j'ai bonne mémoire , si tu veux utiliser l'ancienne configuration il faudrait ajouter dans ton fichier
ou
Ceci dit ton problème est de type "programmation" le compilateur ne trouve pas une correspondance ou une de tes fonctions que tu as déclarée.
Dans mes souvenirs de Qt si j'ai bonne mémoire , si tu veux utiliser l'ancienne configuration il faudrait ajouter dans ton fichier
.procette ligne
Qt += greaterThan(QT_MAJOR_VERSION, 4)il me semble
ou
greaterThan(QT_MAJOR_VERSION, 4) QT += widgets
Ok, voici le main.cpp
Le FenCalculatrice.h
Le FenCalculatrice.cpp
Le .pro
#include <QApplication> #include <QtWidgets> #include "FenCalculatrice.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); FenCalculatrice fenetre; fenetre.show(); return app.exec(); }
Le FenCalculatrice.h
#ifndef FENCALCULATRICE_H #define FENCALCULATRICE_H #include <QWidget> namespace Ui { class FenCalculatrice; } class FenCalculatrice : public QWidget { Q_OBJECT public: explicit FenCalculatrice(QWidget *parent = 0); ~FenCalculatrice(); private: Ui::FenCalculatrice *ui; }; #endif // FENCALCULATRICE_H
Le FenCalculatrice.cpp
#include "FenCalculatrice.h" #include "ui_FenCalculatrice.h" FenCalculatrice::FenCalculatrice(QWidget *parent) : QWidget(parent), ui(new Ui::FenCalculatrice) { ui->setupUi(this); } FenCalculatrice::~FenCalculatrice() { delete ui; }
Le .pro
QT+= widgets gui QT+= core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets SOURCES += \ main.cpp \ FenCalculatrice.cpp HEADERS += \ FenPrincipale.h \ FenCalculatrice.h FORMS += \ FenCalculatrice.ui
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bon je te donne la solution toute simple, déjà dans ton fichier
fichier.h
fichier.cpp
et dans le main
Et normalement ça doit compilé.
Pour ton code je ne sais pas mais peut tu nous préciser exactement ce que tu a ajouté comme ligne de code ?
.proil faudrait ajouté ceci.
Ensuite dans tes fichiers respectifs tu dois implémenter correctement les méthodes donc comme ceci
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
QT += core gui
fichier.h
namespace Ui { class fen; } class fen : public QMainWindow /* ou ce que tu veux */ { Q_OBJECT public: explicit fen(QWidget *parent = 0); ~fen(void); private: Ui::fen *pUi; };
fichier.cpp
/*** * Constructeur ***/ fen::fen(QWidget *parent) :QMainWindow(parent),ui(new pUi::fen) { this->pUi->setupUi(this); } /*** * Destructeur ***/ fen::~fen(void) { delete this->pUi; }
et dans le main
int main(int argc, char *argv[]) { QApplication appFen(argc, argv); fen test; test.show(); return appFen.exec(); }
Et normalement ça doit compilé.
Pour ton code je ne sais pas mais peut tu nous préciser exactement ce que tu a ajouté comme ligne de code ?
Tout d'abord, merci à toi de te décarcasser sur mon problème !
Je crois que le sort s'acharne sur moi... Avec ton code j'ai d'autres erreurs qui apparaissent :
C:\Users\Alan\Documents\Programmation\GUI\test 2\test2\FenCalculatrice.cpp:7: erreur : class 'FenCalculatrice' does not have any field named 'ui'
FenCalculatrice::FenCalculatrice(QWidget *parent) :QDialog(parent),ui(new pUi::FenCalculatrice)
^
C:\Users\Alan\Documents\Programmation\GUI\test 2\test2\FenCalculatrice.cpp:7: erreur : expected type-specifier before 'pUi'
FenCalculatrice::FenCalculatrice(QWidget *parent) :QDialog(parent),ui(new pUi::FenCalculatrice)
^
En fait, il y a également un fichier.ui dans le projet (créé par le QtDesigner au moment de la création de ma fenêtre c'est ce fichier qui contient toutes les données sur leur agencement) et je ne vois aucune référence vers ce fichier si ce n'est le
dans le FenCalculatrice.h (mon fichier ui s'appelle FenCalculatrice.ui)
Je n'ai absolument rien changer au code qu'ils ont fourni : j'ai tout créé étape par étape en suivant le tuto (qui je crois est réalisé sous Qt4). Mes composants ont le même nom et je n'est rien implémenté de plus ou de moins. pour le moment je n'ai même pas ajouter de connexion entre les widgets, je tente juste d'afficher la fenêtre...
PS : en testant ton code, j'ai d'abord tout remplacé et tout écrasé mais je me retrouvait avec une liste de 6 erreurs. Ensuite, j'ai remplacé les "fen" par des "FenCalculatrice" ce qui a eu pour effet de ne sortir que les deux erreurs que j'ai copier ci-dessus
Je crois que le sort s'acharne sur moi... Avec ton code j'ai d'autres erreurs qui apparaissent :
C:\Users\Alan\Documents\Programmation\GUI\test 2\test2\FenCalculatrice.cpp:7: erreur : class 'FenCalculatrice' does not have any field named 'ui'
FenCalculatrice::FenCalculatrice(QWidget *parent) :QDialog(parent),ui(new pUi::FenCalculatrice)
^
C:\Users\Alan\Documents\Programmation\GUI\test 2\test2\FenCalculatrice.cpp:7: erreur : expected type-specifier before 'pUi'
FenCalculatrice::FenCalculatrice(QWidget *parent) :QDialog(parent),ui(new pUi::FenCalculatrice)
^
En fait, il y a également un fichier.ui dans le projet (créé par le QtDesigner au moment de la création de ma fenêtre c'est ce fichier qui contient toutes les données sur leur agencement) et je ne vois aucune référence vers ce fichier si ce n'est le
#include "ui_FenCalculatrice.h"
dans le FenCalculatrice.h (mon fichier ui s'appelle FenCalculatrice.ui)
Je n'ai absolument rien changer au code qu'ils ont fourni : j'ai tout créé étape par étape en suivant le tuto (qui je crois est réalisé sous Qt4). Mes composants ont le même nom et je n'est rien implémenté de plus ou de moins. pour le moment je n'ai même pas ajouter de connexion entre les widgets, je tente juste d'afficher la fenêtre...
PS : en testant ton code, j'ai d'abord tout remplacé et tout écrasé mais je me retrouvait avec une liste de 6 erreurs. Ensuite, j'ai remplacé les "fen" par des "FenCalculatrice" ce qui a eu pour effet de ne sortir que les deux erreurs que j'ai copier ci-dessus