Partage
  • Partager sur Facebook
  • Partager sur Twitter

[QT] QMessageBox avec "connect"

    9 juillet 2007 à 23:10:42

    Salut, c'est encore moi ...

    Je suis en train de tester QMessageBox mais j'ai un problème :
    QMessageBox msgBox;
    QPushButton *connectButton = msgBox.addButton(tr("Connect"), QMessageBox::ActionRole);
    QPushButton *abortButton = msgBox.addButton(QMessageBox::Abort);

    msgBox.exec();

    QMessageBox msgBox;
    QPushButton *connectButton = msgBox.addButton(tr("Connect"), QMessageBox::ActionRole);
    QPushButton *abortButton = msgBox.addButton(QMessageBox::Abort);

    QObject::connect(submit, SIGNAL(clicked()), &msgBox, SLOT(exec()));


    Dans le 1er, le MessageBox (je ne c'est pas comment traduire ça en français) se déclanche avant même que ma fenêtre s'ouvre. Alors, je me suis dit, je veux que mon MessageBox s'ouvre quand j'appuie sur un bouton en les reliant avec connect.

    Mais ça ne marche pas. Mais il n'y a pas d'erreur, ça compile très bien.

    <HS>Qt me torture que jours en jours et ça fait longtemps que j'ai pas autant ouvert de topic comme ça </HS>

    Merci de vos réponses.
    • Partager sur Facebook
    • Partager sur Twitter
      10 juillet 2007 à 11:41:27

      Citation :

      Mais ça ne marche pas.


      Ca donne quoi ?
      Le bouton s'affiche mais aucun effet quand on clic dessus ?

      ceci marche pourtant bien :
      #include <QApplication>
      #include <QPushButton>
      #include <QMessageBox>

       int main(int argc, char *argv[])
      {
              QApplication app(argc, argv);

              QMessageBox msgBox;
              msgBox.addButton("Connect", QMessageBox::ActionRole);
              msgBox.addButton(QMessageBox::Abort);
           
              QPushButton *submit = new QPushButton("affiche msgBox");
             
              QObject::connect(submit, SIGNAL(clicked()), &msgBox, SLOT(exec()));
             
              submit->show();
             
              return app.exec();
      }
       
      • Partager sur Facebook
      • Partager sur Twitter
        10 juillet 2007 à 21:45:20

        Citation : gogeta1

        Dans le 1er, le MessageBox (je ne c'est pas comment traduire ça en français)


        boite de dialogue ;)

        Citation : gogeta1

        Dans le 1er, le MessageBox (je ne c'est pas comment traduire ça en français) se déclenche avant même que ma fenêtre s'ouvre. Alors, je me suis dit, je veux que mon MessageBox s'ouvre quand j'appuie sur un bouton en les reliant avec connect.


        voilà un exemple typique de l'utilité des pointeurs, ta MessageBox disparaît de la mémoire à la fin du constructeur de ta fenêtre.

        ceci marchera mieux :
        QMessageBox *msgBox = new QMessageBox(this);
        QPushButton *connectButton = msgBox->addButton(tr("Connect"), QMessageBox::ActionRole);
        QPushButton *abortButton = msgBox->addButton(QMessageBox::Abort);

        QObject::connect(submit, SIGNAL(clicked()), msgBox, SLOT(exec()));


        ps : c'est pas à cause de Qt mais d'un manque de connaissance de la gestion de la mémoire ;)
        • Partager sur Facebook
        • Partager sur Twitter
          10 juillet 2007 à 23:05:00

          Je testerais ça demain. ET je vous dirai, si ça marche.
          • Partager sur Facebook
          • Partager sur Twitter

          [QT] QMessageBox avec "connect"

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown