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 :

Un QMessageBox qui ne daigne pas s'afficher

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de VivienD
    Homme Profil pro
    Développeur logiciel
    Inscrit en
    Octobre 2009
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Allemagne

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

    Informations forums :
    Inscription : Octobre 2009
    Messages : 523
    Par défaut Un QMessageBox qui ne daigne pas s'afficher
    Bonsoir,

    Ce semestre j'ai un cours de programmation orientée objet en C++ ; la note finale se portera sur un projet à remettre. Comme je souhaite m'avancer en «posant les fondations» de mon programme, j'ai choisi de commencer à programmer une fenêtre basique qui recevra plus tard le dit projet.

    Toutefois Qt me résiste et un MessageBox refuse de s'afficher. Ce MessageBox correspond à la fameuse fonction «À propos de» du menu «Aide». Cependant j'ai beau aller dans ce menu et cliquer sur cette action, je n'obtiens rien.

    Voici le code de mon programme
    Code main.cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <QApplication>
    #include "CustomMainWindow.h"
     
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        CustomMainWindow mW;
     
        mW.show();
     
        return a.exec();
    }

    Code CustomMainWindow.h : 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
    #ifndef CUSTOMMAINWINDOW_H
    #define CUSTOMMAINWINDOW_H
     
    #include <QWidget>
    #include <QMainWindow>
        #include <QMenuBar>
            #include <QMenu>
            #include <QAction>
        #include <QDockWidget>
     
    #define MINIMUM_HEIGHT 480
    #define MINIMUM_WIDTH  640
     
    class CustomMainWindow : public QMainWindow
    {
        public:
            CustomMainWindow();
            ~CustomMainWindow();
     
        public slots:
            void openAboutMessageBox();
     
        private:
            QWidget *windowContent;
            QDockWidget *dock;
                QWidget *dockContent;
            QMenu *menuFile;
                QAction *actionQuit;
            QMenu *menuSettings;
                QAction *actionShowDock;
            QMenu *menuHelp;
                QAction *actionAbout;
     
    };
     
    #endif // CUSTOMMAINWINDOW_H

    Code CustomMainWindow.cpp : 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
    #include "CustomMainWindow.h"
    #include <QApplication>
    #include <QPalette>
    #include <QMessageBox>
     
    CustomMainWindow::CustomMainWindow() : windowContent(new QWidget),
                                           dock(new QDockWidget("Playlists", this)),
                                               dockContent(new QWidget),
                                           menuFile(menuBar()->addMenu("&File")),
                                               actionQuit(menuFile->addAction(tr("&Quit"))),
                                           menuSettings(menuBar()->addMenu("&Settings")),
                                               actionShowDock(dock->toggleViewAction()),
                                           menuHelp(menuBar()->addMenu("&?")),
                                               actionAbout(menuHelp->addAction(tr("&About Aud!")))
    {
        setMinimumSize(MINIMUM_WIDTH, MINIMUM_HEIGHT);
     
        setPalette(QPalette(Qt::white));
        setAutoFillBackground(true);
     
        setCentralWidget(windowContent);
        windowContent->setPalette(QPalette(Qt::lightGray));
        windowContent->setAutoFillBackground(true);
        windowContent->setMinimumWidth((int)(3*MINIMUM_WIDTH/4));
     
        addDockWidget(Qt::LeftDockWidgetArea, dock);
        dock->setPalette(QPalette(Qt::lightGray));
        dock->setAutoFillBackground(true);
        dock->setVisible(false);
        dock->setMinimumWidth((int)(MINIMUM_WIDTH/6));
        dock->setMaximumWidth((int)(MINIMUM_WIDTH/4));
        dock->setFeatures(QDockWidget::DockWidgetClosable);
    //    dock->setWidget(dockContent);
     
        actionQuit->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q));
        QObject::connect(actionQuit, SIGNAL(triggered()), qApp, SLOT(quit()));
     
        actionShowDock->setText("&Show Playlists");
        menuSettings->addAction(actionShowDock);
     
        actionAbout->setShortcut(QKeySequence::HelpContents);
        QObject::connect(actionAbout, SIGNAL(triggered()), this, SLOT(openAboutMessageBox()));
    }
     
    CustomMainWindow::~CustomMainWindow()
    {
        delete windowContent;
        delete dockContent;
        delete dock;
    }
     
    void CustomMainWindow::openAboutMessageBox()
    {
        QMessageBox::information(this, "About Aud!", "Texte explicatif à la con.");
    }

    Merci d'avance pour votre aide.

  2. #2
    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
    Il manque la macro Q_OBJECT pour permettre à CustomMainWindow d'utiliser les signaux/slots.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    class CustomMainWindow : public QMainWindow
    {
        Q_OBJECT

  3. #3
    Membre éclairé
    Avatar de VivienD
    Homme Profil pro
    Développeur logiciel
    Inscrit en
    Octobre 2009
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Allemagne

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

    Informations forums :
    Inscription : Octobre 2009
    Messages : 523
    Par défaut
    Ça marche. Merci bien.

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

Discussions similaires

  1. Titre des images qui ne devrait pas être affiché
    Par sedrilo dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 5
    Dernier message: 19/08/2007, 20h31
  2. JList qui ne veut pas s'afficher
    Par hamham dans le forum Composants
    Réponses: 16
    Dernier message: 29/01/2007, 18h20
  3. Réponses: 1
    Dernier message: 21/11/2006, 21h56
  4. [Mail] texte qui ne devrait pas s'afficher
    Par jfrag dans le forum Langage
    Réponses: 4
    Dernier message: 14/11/2006, 18h52
  5. [XSLT][XSD] Annotation qui ne dervait pas s'afficher
    Par ploxien dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 27/10/2006, 12h41

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