Partage
  • Partager sur Facebook
  • Partager sur Twitter

Persitance Fenetre sous QT creator

Sujet résolu
    26 mars 2019 à 15:08:48

    Bonjour à tous,

    Je receptionne un signal d'une classe dans le slot d'une autre classe, et dans ce slot, j'affiche le fenetre.

    Le probleme c'est que à l'execution la fenetre se lance et se ferme instantannement .. 

    je n'arrive pas a la faire rester a l'ecran tant que je la ferme pas..

    Si je l'ouvre depuis le main , la elle persiste. Mais de la classe non 

    Merci pour votre aide.. 

    • Partager sur Facebook
    • Partager sur Twitter
      26 mars 2019 à 15:50:43

      Salut ,

      je pense que tu a oubliée QApplication .

      #include <QApplication>
      
      int main(int argc, char *argv[])
      {
          QApplication app(argc, argv);
      	
      	// code	
      	
          return app.exec();
      }


      sinon peut on voir le code .

      • Partager sur Facebook
      • Partager sur Twitter
        26 mars 2019 à 15:53:54

        di20 a écrit:

        Salut ,

        je pense que tu a oubliée QApplication .

        #include <QApplication>
        
        int main(int argc, char *argv[])
        {
            QApplication app(argc, argv);
        	
        	// code	
        	
            return app.exec();
        }


        sinon peut on voir le code .

        Dans mon main je call la premiere fenetre : 
        using namespace std;
        int main(int argc, char *argv[])
        {
            QApplication app(argc, argv);
               window1 fenetre1;
               //QLineEdit *bouton1 = new QLineEdit("Bonjour");
               fenetre1.show();
        
        
            return app.exec();
        }
        

        ensuite cette fenetre emet un signal lorsqu'elle se ferme comme ceci :

        void window1::ouvrirDialogue()
        {
        
            QString contenu_m_champJob = ui->m_champJob->text();
            QString contenu_m_champLotNumber = ui->m_champLotNumber->text();
            QString contenu_m_champLogFile = ui->m_champLogFile->text();
            QString contenu_m_champOperator = ui->m_champOperator->text();
            QString contenu_m_boxNombreDevice = ui->m_boxNombreDevice->text();
        
            if(contenu_m_champJob.isEmpty() || contenu_m_champLotNumber.isEmpty() ||
              contenu_m_champLogFile.isEmpty() || contenu_m_champOperator.isEmpty() || contenu_m_boxNombreDevice.toInt()== 0)
            {
                QMessageBox::information(this, "ERROR Message", "ERROR: Fill in all entries");
                //std::cout << contenu_m_boxNombreDevice <<endl;
            }
            else
            {        
               // QObject::connect(ui->pushButtonOk, SIGNAL(released()), qApp, SLOT(quit()));
                QObject::connect(ui->pushButtonOk, &QPushButton::clicked, qApp, &QCoreApplication::quit);
        
                Window018703 *obj1 = new Window018703();
                //QObject::connect(ui->pushButtonOk, SIGNAL(clicked()), obj1, SLOT(nouvelleWindow()));
                QObject::connect(ui->pushButtonOk, &QPushButton::clicked, obj1, &Window018703::windowView);
        
            }
        
        }


        Le dernier connect est catché par une autre classe pour ouvrir et afficher une autre fenetre commce ceci : 

        void Window018703::windowView()
        
        {
            cout << "nous somme dans windowView() " <<endl;
            Window018703 fenetre2;
            fenetre2.show();
        }
        

        sauf que la fenetre se lance et se ferme instant .. 




        • Partager sur Facebook
        • Partager sur Twitter
          26 mars 2019 à 16:01:00

          Salut,

          est-ce que ça ne serait pas lié à la durée de vie de ton pointeur obj1 dans window1::ouvrirDialogue() ?

          • Partager sur Facebook
          • Partager sur Twitter

          Avez-vous entendu parler de Julia ? Laissez-vous tenter ...

            26 mars 2019 à 16:05:46

            Nozio a écrit:

            Salut,

            est-ce que ça ne serait pas lié à la durée de vie de ton pointeur obj1 dans window1::ouvrirDialogue() ?

            Pas con , tu pense à quoi ? 

            dans window1::ouvrirDialogue() le else permet de close la fenetre et de lancer du coup l'autre fenetre grace au slo&Window018703::windowView


            Si la fenetre n'est pas lancé par le main elle n'est peu etre pas persistante ? dans se cas comment receptionner un signal emis par la classe dans le main .. ou bien comment créer une connection de cette facon a que le main sache quand lancer la seconde fenetre ... 


            un peu d'aide ? 


            edit[]

            Je pense avoir compris ce qui n'allait pas, lorsque ce connect s'execute : 

                    QObject::connect(ui->pushButtonOk, &QPushButton::clicked, qApp, &QCoreApplication::quit);
            

            Cela a pour consequence de fermer toute les app car cela execute le return du main de la classe QApplication .. : 

            using namespace std;
            int main(int argc, char *argv[])
            {
                QApplication app(argc, argv);
                   window1 fenetre1;
                   //QLineEdit *bouton1 = new QLineEdit("Bonjour");
                   fenetre1.show();
             
             
                return app.exec();
            }

            Comment s'afranchir de cela ? 

            nous ne pouvons pas fermer une fenetre sans fermer tout le code ?


            J'ai resolut le probleme merci a vous 

            -
            Edité par Mars8 26 mars 2019 à 19:51:04

            • Partager sur Facebook
            • Partager sur Twitter

            Persitance Fenetre sous QT creator

            × 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