IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Classe et pointeur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2013
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 41
    Par défaut Classe et pointeur
    Bonjour,

    Je commence à travailler avec Qt sur Visual Studio 2010.
    J'ai donc installé le plugin add-in de Qt pour Visual Studio. Je peux ainsi lancer un projet "Qt Application" avec Visual Studio 2010.

    Je m'inspire de la doc pour Qt Creator mais lorsque j'écris exacte,ent la même chose il y a une erreur comme si la "class" n'était pas reconnue.

    Mon fichier mainwindow.h est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
     
    #include <QtGui/QMainWindow>
     
    namespace Ui {
    	class MainWindow;
    }
    class MainWindow : public QMainWindow
    {
    	Q_OBJECT
     
    public:
    	explicit MainWindow(QWidget *parent = 0);
    	~MainWindow();
     
    private:
    	Ui::MainWindow *ui;
     
    };
     
    #endif
    Mon fichier mainwindow.cpp est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    #include "mainwindow.h"
    #include "ui_mainwindow.h"
     
    #include <qmainwindow.h>
     
    MainWindow::MainWindow(QWidget *parent)
    	: QMainWindow(parent),
    	ui(new Ui::MainWindow)
     
    {
    	ui->setupUi(this);
     
    }
     
    MainWindow::~MainWindow()
    {
    	delete ui;
    }
    Et mon fichier main.cpp est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #include "mainwindow.h"
    #include <QtGui/QApplication>
    #include <QDebug>
     
     
    int main(int argc, char *argv[])
    {
    	QApplication a(argc, argv);
    	MainWindow w;
    	w.show();
    	return a.exec();
    }
    Voici l'erreur que j'ai en retour:
    Error 1 error C2512: 'Ui::MainWindow' : no appropriate default constructor available C:\...\mainwindow.cpp 8

    Error 2 error C1903: unable to recover from previous error(s); stopping compilation C:\...\mainwindow.cpp 10
    Il y a quelque chose que je ne saisie pas concernant la class et les pointeurs. Il n'y a pas d'erreur lorsque j'utilise ces lignes de code avec QT Creator.

    Quelqu'un saurait-il où est le problème svp?

    Cordialement.

    klelu

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 163
    Billets dans le blog
    153
    Par défaut
    Bonjour,

    Pourquoi vous déclarez la classe dans un namespace, mais que vous ne la définissez pas dans le namespace ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre averti
    Inscrit en
    Mars 2013
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 41
    Par défaut
    Merci pour vos réponses.

    Oui j'ai bien installé At pour Visual Studio 2010.

    J'ai donc revu ma grossière erreur conçernant le namespace en réécrivant le fichier mainwindow.h comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
     
    #include <QtGui/QMainWindow>
    #include <mainwindow.h>
     
    namespace Ui {
    class MainWindow : public QMainWindow
    {
    	Q_OBJECT
     
    public:
    	explicit MainWindow(QWidget *parent = 0);
    	~MainWindow();
     
    private:
    	Ui::MainWindow *ui;
     
    };
    }
     
    #endif
    Voici mon fichier mainwindow.cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #include "mainwindow.h"
    #include "ui_mainwindow.h"
     
    #include <qmainwindow.h>
    #include <mainwindow.h>
     
    Ui::MainWindow::MainWindow(QWidget *parent)
    	: QMainWindow(parent),
    	ui(new Ui::MainWindow)
     
    {	ui->setupUi(this);
    	ui->pushButtonA->setText("Hello");
     
    }
     
    Ui::MainWindow::~MainWindow()
    {
    	delete ui;
    }
    J'ai donc également modifié mon fichier main.cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #include "mainwindow.h"
    #include <QtGui/QApplication>
    #include <QDebug>
     
     
    int main(int argc, char *argv[])
    {
    	QApplication a(argc, argv);
    	Ui::MainWindow w;
    	w.show();
    	return a.exec();
    }
    Lorsque je compile j'ai 2 erreurs qui apparaissent:
    1) 'setupUi' : is not a member of 'Ui::MainWindow'
    2) 'pushButtonA' : is not a member of 'Ui::MainWindow'

    Je suppose que la 2ème erreur est directement liée à la première puisque la première ligne permet de faire le lien entre le "designer" et le "programme".

    Je comprends que je n'utilise pas exactement la même classe que dans Qt Creator et que le problème doit venir de là.

    Pourriez-vous me guider svp pour que je puisse écrire mon programme "lié au fichier form .ui" (fonction "connect", "disconnect",...)?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par klelu Voir le message
    J'ai donc revu ma grossière erreur conçernant le namespace en réécrivant le fichier mainwindow.h comme ceci:
    Ce n'était pas un erreur, c'était bien cela qu'il fallait faire, et qui était normalement généré automatiquement.
    Après lui donner le même nom n'est pas forcément une excellente idée, mais étant situé dans le namespace Ui, cela ne pose pas de problème tant que tu ne fais pas using namespace Ui;.

    Le code que tu as présenté dans ton premier message devrait bien fonctionner.
    Essai de vérifier que le fichier ui_mainwindow.h est bien généré et présent, et refais un génération complète de ton projet.

  5. #5
    Membre averti
    Inscrit en
    Mars 2013
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 41
    Par défaut
    Entendu merci je regarderais ça quand j'aurais le temps. Je me concentre maintenant sur Qt Creator (donc sans passer par Visual Studio). Je reviendrais sur Visual Studio plus tard.

  6. #6
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2010
    Messages : 248
    Par défaut
    Citation Envoyé par klelu Voir le message
    Bonjour,
    Bonjour,

    Je commence à travailler avec Qt sur Visual Studio 2010.
    J'ai donc installé le plugin add-in de Qt pour Visual Studio. Je peux ainsi lancer un projet "Qt Application" avec Visual Studio 2010.

    ...
    Bonjour,
    Avez vous installé la version de Qt pour Visual Studio 2010 ?

    Citation Envoyé par LittleWhite Voir le message
    Bonjour,

    Pourquoi vous déclarez la classe dans un namespace, mais que vous ne la définissez pas dans le namespace ?
    Seule la class Ui::MainWindow est déclarée dans le namespace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    namespace Ui {
    	class MainWindow;
    }
    La classe MainWindow héritant de QMainWindow n'est pas la même. Il s'agit de code automatiquement généré par Qt Creator lors de la création d'un nouveau projet.

Discussions similaires

  1. class et pointeur
    Par loisir1976 dans le forum Débuter
    Réponses: 1
    Dernier message: 04/04/2009, 22h26
  2. Pb avec classes et pointeurs
    Par Fahmi06 dans le forum C++
    Réponses: 3
    Dernier message: 19/02/2008, 17h39
  3. [POO] Classe avec pointeurs de classes
    Par dridri dans le forum Langage
    Réponses: 3
    Dernier message: 15/02/2008, 17h53
  4. Problèmes avec classes et pointeurs
    Par Anas1984 dans le forum C++
    Réponses: 2
    Dernier message: 02/11/2006, 12h49
  5. Classe, pile, pointeurs et casse-tête!
    Par zazaraignée dans le forum Langage
    Réponses: 6
    Dernier message: 26/09/2005, 16h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo