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 :

Problème avec les slots

Vue hybride

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 59
    Par défaut Problème avec les slots
    bonjour,

    je vous montre d'abord mon code

    mon .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
     
    void FenPrincipale::creerActions()
    {
        actionQuitter = new QAction(tr("&Quitter"), this);
        actionQuitter->setShortcut(tr("Ctrl+Q"));
        actionQuitter->setIcon(QIcon(":/images/images/arret-96px.png"));
        connect(actionQuitter, SIGNAL(triggered()), qApp, SLOT(quit()));
     
     
        actionAPropos = new QAction(tr("&A propos..."), this);
        connect(actionAPropos, SIGNAL(triggered()), this, SLOT(aPropos()));
        actionAPropos->setIcon(QIcon(":/images/images/info-96px.png"));
    }
     
    void FenPrincipale::aPropos()
    {
        QMessageBox::information(this, tr("A propos..."), tr("texte"));
    }
    mon.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
     
    class FenPrincipale : public QMainWindow
    {
     
            public:
                    FenPrincipale();
                    ~FenPrincipale();
     
            private:
                    void creerActions();
                    void creerMenus();
                    void creerBarresOutils();
                    void creerBarreEtat();
     
                    QAction *actionQuitter;
                    QAction *actionAPropos;
     
    public slots :
                    void aPropos();
     
    };
    Le problème c'est qu'il me met en avertissement :
    Object::connect: No such slot QMainWindow::aPropos() in ..\GestionPi\fenPrincipale.cpp:107
    il compile bien, l'appli se lance bien, mais lorsque je clique sur "a propos" dans mon menu de la fenetre rien ne se passe.
    Quelqu'un aurait il une idée sur mon erreur?

    merci

  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
    Ce serait pas l'oubli de la macro Q_OBJECT ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class FenPrincipale : public QMainWindow
    {
        Q_OBJECT
     
    public:
        FenPrincipale();
        ~FenPrincipale();
    ...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 59
    Par défaut
    j'avais deja essayer ca, mais quand je le met, ca me met pleins d'erreurs de compilation

  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
    Peut-être, mais il faut partir de là. Cette macro est nécessaire étant donné que c'est bien un QObject que tu fais (une simple classe C++ n'a pas de slots, c'est propre à Qt).

    Un article intéressant pour mieux comprendre : http://louis-du-verdier.developpez.com/qt/fondations/

    Peux-tu montrer les erreurs de compilation en question, et le code concerné si ce n'est pas celui que t'as déjà mis ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 59
    Par défaut
    j'ai essayer en recreant une fenetre avec l'aide de QT, car dans le premier cas j'avais creer les .cpp et .h vide.

    Donc voila le nouveau code,
    .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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
     
    #include <QMainWindow>
    #include <QtGui>
    #include <QDialog>
     
    namespace Ui {
        class MainWindow;
    }
     
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
     
    public:
        explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();
     
    private:
        Ui::MainWindow *ui;
     
        void creerActions();
        void creerMenus();
        void creerBarresOutils();
        void creerBarreEtat();
     
        QAction *actionQuitter;
        QAction *actionAPropos;
     
    public slots :
        void aPropos();
     
    };
     
    #endif // MAINWINDOW_H
    .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
    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
     
    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include <QMessageBox>
    #include <QAction>
    #include <QApplication>
    #include <QGridLayout>
    #include <QHBoxLayout>
    #include <QDate>
    #include <QWidget>
     
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
     
        /********************************************************/
        /*        Paramétrage de la fenêtre principale          */
        /********************************************************/
        // dimension et positionnement de la fenetre principale---
        QDesktopWidget bureau;
        QRect surface_bureau = bureau.screenGeometry();
        int x = surface_bureau.width()/2 - width()/2;
        int y = surface_bureau.height()/2 - height()/2 ;
        setGeometry(x,y,1024, 768);
        setMinimumSize(800, 600);  // taille minimum de la fenêtre principale
        setWindowIcon(QIcon(":/images/images/flamme.gif"));  // icone de la fenêtre principale
        setWindowTitle(tr("Gestion du peloton d'intervention"));  // titre de la fenêtre principale
     
        /********************************************************/
        /*   Génération des widgets de la fenêtre principale    */
        /********************************************************/
        creerActions();
        creerMenus();
        creerBarresOutils();
        creerBarreEtat();
     
        // création de la zone centrale de type SDI
        QWidget *zoneCentrale = new QWidget;
     
    }
     
    MainWindow::~MainWindow()
    {
        delete ui;
     
        delete actionQuitter;
        delete actionAPropos;
    }
     
    void MainWindow::creerActions()
    {
        actionQuitter = new QAction(tr("&Quitter"), this);
        actionQuitter->setShortcut(tr("Ctrl+Q"));
        actionQuitter->setIcon(QIcon(":/images/images/arret-96px.png"));
        connect(actionQuitter, SIGNAL(triggered()), qApp, SLOT(quit()));
     
     
        actionAPropos = new QAction(tr("&A propos..."), this);
        connect(actionAPropos, SIGNAL(clicked()), this, SLOT(aPropos()));
        actionAPropos->setIcon(QIcon(":/images/images/info-96px.png"));
    }
     
    void MainWindow::creerMenus()
    {
        QMenu *menuFichier = menuBar()->addMenu("&Fichier");
        menuFichier->addAction(actionQuitter);
     
        QMenu *menuAide = menuBar()->addMenu(tr("&Aide"));
        menuAide->addAction(actionAPropos);
     
    }
     
    void MainWindow::creerBarresOutils()
    {
        // Création de la barre d'outils
        QToolBar *toolBarFichier = addToolBar("Fichier");
        toolBarFichier->addAction(actionQuitter);
     
    }
     
    void MainWindow::creerBarreEtat()
    {
     
    }
     
    void MainWindow::aPropos()
    {
        QMessageBox::information(this, tr("A propos..."), tr("texte"));
    }
    Et lorsque je clique sur "a propos" dans mon menu aide, rien ne se passe.
    c'est la meme chose, comprend pas

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 59
    Par défaut
    ok c'est bon ca fonctionne, j'avais juste changer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        connect(actionAPropos, SIGNAL(triggered()), this, SLOT(aPropos()));
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    connect(actionAPropos, SIGNAL(clicked()), this, SLOT(aPropos()));
    du coup ca fonctionnait plus.

    je te remerci de ton aide

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

Discussions similaires

  1. [2.x] Problème avec les slot
    Par bihman dans le forum Symfony
    Réponses: 0
    Dernier message: 15/04/2012, 13h56
  2. Problème avec les slots
    Par Far_Away dans le forum Débuter
    Réponses: 6
    Dernier message: 11/02/2011, 21h09
  3. Problème avec les apostrophes
    Par misterbillyboy dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/07/2003, 16h39
  4. Problème avec les fichiers .JPG
    Par cprogil dans le forum Langage
    Réponses: 5
    Dernier message: 10/06/2003, 15h44
  5. []Problème avec les formulaires Outlook
    Par Invité dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59

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