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 :

Héritage multiple

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 115
    Par défaut Héritage multiple
    bonjour, je suis entrain de voir ce qu'est l'héritage multiple en Qt, pour comprendre ce sujet j'ai commencé a faire une fenetre principale avec Qt designer, cependant , je ne comprend pas où est mon erreur de compilation.
    Pouvez vous m'éclairez sur ce point?

    Voici le code FenPrincipal.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include "FenPrincipal.h"
     
     
    using namespace std;
     
    FenPrincipal::FenPrincipal(QWidget *parent) : QMainWindow(parent)
    {
    	setupUi(this); 
    }
    Voici le code de FenPrincipal.h:
    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
     
    #ifndef _FENPRINCIPAL_H_
    #define _FENPRINCIPAL_H_
     
    #include <QtGui>
    #include "ui_FenPrincipal.h"
     
    class FenPrincipal : public QMainWindow, private Ui::FenPrincipal
    {
        Q_OBJECT
     
        public:
    		FenPrincipal(QWidget *parent = 0);
     
        private slots:
     
    	private:
     
    };
     
    #endif
    Voici le code du 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
    14
    15
    16
    17
    18
    19
    20
    21
     
    #include <QApplication>
    #include <QtGui>
    #include "FenPrincipal.h"
     
     
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
     
    	// Traducteur pour afficher les "cancel" en "annuler" par exemple
    	QString locale = QLocale::system().name().section('_', 0, 0);
    	QTranslator translator;
    	translator.load(QString("qt_") + locale, QLibraryInfo::location(QLibraryInfo::TranslationsPath));
    	app.installTranslator(&translator);
     
        FenPrincipal fen;
        fen.show();
     
        return app.exec();
    }
    Voici mon erreur de compilation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    In file included from FenPrincipal.cpp:1:
    FenPrincipal.h:11: error: expected class-name before ‘{’ token
    FenPrincipal.cpp: In constructor ‘FenPrincipal::FenPrincipal(QWidget*)’:
    FenPrincipal.cpp:7: error: expected class-name before ‘{’ token
    FenPrincipal.cpp:8: error: ‘setupUi’ was not declared in this scope
    make: *** [FenPrincipal.o] Erreur 1
    Merci de votre compréhension

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2010
    Messages
    199
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 199
    Par défaut
    Quel est le nom d'objet que tu as donné dans le designer:



    Uploaded with ImageShack.us

    Uploaded with ImageShack.us[/IMG]

    Ce n'est pas parce que ton fichier s'appelle FenPrincipal que la classe générée va s’appeler FenPrincipal.

    Du coup, dans le fichier ui_FenPrincipal.h, ta classe ne s'appelle pas forcément Ui::FenPrincipal, et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class FenPrincipal : public QMainWindow, private Ui::FenPrincipal
    est donc invalide.

    Vérifie ton .ui ainsi que le .h généré.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 115
    Par défaut
    dans mon répertoire il y a plusieurs fichiers, FenPrincipal.ccp, FenPrincipal.h,FenPrincipal.ui, ui_FenPrincipal.h .
    Lorsque j'ai sauvegardé sur qtdesigner, j'ai nommé le fichier FenPrincipal, qtdesigner a mis l'extension .ui, donc finalement j'ai obtenu un fichier FenPrincipal.ui .

    Voici le le code de ui_FenPrincipal.h généré :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    /********************************************************************************
    ** Form generated from reading UI file 'FenPrincipal.ui'
    **
    ** Created: Sun Sep 11 21:09:29 2011
    **      by: Qt User Interface Compiler version 4.7.0
    **
    ** WARNING! All changes made in this file will be lost when recompiling UI file!
    ********************************************************************************/
     
    #ifndef UI_FENPRINCIPAL_H
    #define UI_FENPRINCIPAL_H
     
    #include <QtCore/QVariant>
    #include <QtGui/QAction>
    #include <QtGui/QApplication>
    #include <QtGui/QButtonGroup>
    #include <QtGui/QHeaderView>
    #include <QtGui/QMainWindow>
    #include <QtGui/QMenu>
    #include <QtGui/QMenuBar>
    #include <QtGui/QStatusBar>
    #include <QtGui/QWidget>
     
    QT_BEGIN_NAMESPACE
     
    class Ui_MainWindow
    {
    public:
        QAction *actionOpen;
        QAction *actionSave;
        QAction *actionClose;
        QWidget *centralwidget;
        QMenuBar *menubar;
        QMenu *menuFichier;
        QMenu *menuHelp;
        QStatusBar *statusbar;
     
        void setupUi(QMainWindow *MainWindow)
        {
            if (MainWindow->objectName().isEmpty())
                MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
            MainWindow->resize(800, 600);
            actionOpen = new QAction(MainWindow);
            actionOpen->setObjectName(QString::fromUtf8("actionOpen"));
            actionSave = new QAction(MainWindow);
            actionSave->setObjectName(QString::fromUtf8("actionSave"));
            actionClose = new QAction(MainWindow);
            actionClose->setObjectName(QString::fromUtf8("actionClose"));
            centralwidget = new QWidget(MainWindow);
            centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
            MainWindow->setCentralWidget(centralwidget);
            menubar = new QMenuBar(MainWindow);
            menubar->setObjectName(QString::fromUtf8("menubar"));
            menubar->setGeometry(QRect(0, 0, 800, 25));
            menuFichier = new QMenu(menubar);
            menuFichier->setObjectName(QString::fromUtf8("menuFichier"));
            menuHelp = new QMenu(menubar);
            menuHelp->setObjectName(QString::fromUtf8("menuHelp"));
            MainWindow->setMenuBar(menubar);
            statusbar = new QStatusBar(MainWindow);
            statusbar->setObjectName(QString::fromUtf8("statusbar"));
            MainWindow->setStatusBar(statusbar);
     
            menubar->addAction(menuFichier->menuAction());
            menubar->addAction(menuHelp->menuAction());
            menuFichier->addAction(actionOpen);
            menuFichier->addAction(actionSave);
            menuFichier->addAction(actionClose);
     
            retranslateUi(MainWindow);
     
            QMetaObject::connectSlotsByName(MainWindow);
        } // setupUi
     
        void retranslateUi(QMainWindow *MainWindow)
        {
            MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0, QApplication::UnicodeUTF8));
            actionOpen->setText(QApplication::translate("MainWindow", "Open", 0, QApplication::UnicodeUTF8));
            actionSave->setText(QApplication::translate("MainWindow", "Save", 0, QApplication::UnicodeUTF8));
            actionClose->setText(QApplication::translate("MainWindow", "Close", 0, QApplication::UnicodeUTF8));
            menuFichier->setTitle(QApplication::translate("MainWindow", "File", 0, QApplication::UnicodeUTF8));
            menuHelp->setTitle(QApplication::translate("MainWindow", "Help", 0, QApplication::UnicodeUTF8));
        } // retranslateUi
     
    };
     
    namespace Ui {
        class MainWindow: public Ui_MainWindow {};
    } // namespace Ui
     
    QT_END_NAMESPACE
     
    #endif // UI_FENPRINCIPAL_H

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    Oui, alors si tu lis le fichier généré, tu te rends compte que ta classe s'appelle MainWindow et est accessible grâce à :
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    namespace Ui {
        class MainWindow: public Ui_MainWindow {};
    } // namespace Ui
    soit Ui::MainWindow.

    C'est le nom de l'objet principal (le parent de tous), à modifier dans le .ui (avec Designer ou en mode texte peu importe, c'est un XML donc facile à comprendre).

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 115
    Par défaut
    merci de ton aide, c'est exactement ça, mon problème est résolu ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. composants C++ Builder et héritage multiple
    Par vedrfolnir dans le forum C++Builder
    Réponses: 2
    Dernier message: 12/10/2005, 10h04
  2. [heritage][conception]héritage multiple en java!
    Par soulhouf dans le forum Langage
    Réponses: 9
    Dernier message: 25/08/2005, 20h03
  3. L'héritage multiple est-il possible en Delphi ?
    Par SchpatziBreizh dans le forum Langage
    Réponses: 8
    Dernier message: 30/06/2005, 11h30
  4. utilisez vous l'héritage multiple ?
    Par vodosiossbaas dans le forum C++
    Réponses: 8
    Dernier message: 13/06/2005, 20h25
  5. [XML Schemas]héritage multiple
    Par nicolas_jf dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 10/06/2003, 12h55

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