Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Close QDialog by code
Forum Updated to NodeBB v4.3 + New Features

Close QDialog by code

Scheduled Pinned Locked Moved Solved General and Desktop
14 Posts 4 Posters 5.5k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • mrjjM Offline
    mrjjM Offline
    mrjj
    Lifetime Qt Champion
    wrote on last edited by
    #5

    Maybe also
    http://doc.qt.io/qt-5/qdialog.html#reject

    1 Reply Last reply
    2
    • SikarjanS Offline
      SikarjanS Offline
      Sikarjan
      wrote on last edited by Sikarjan
      #6

      Thanks for all the hints so far but none worked.

      void InsertImageDialog::on_pushButton_clicked()
      {
          QString imgSrc = QFileDialog::getOpenFileName(this, tr("Select image"), mPath, tr("Image Files (*.png *.jpg *.gif);; All files (*)"));
      
          if(imgSrc.isEmpty()){
              this->reject(); // I also tried ui and ui->buttonBox
              return;
          }
      }
      

      This is not working. The QDialig is not closed. I don't understand it. According to the documentation it should work.

      void QDialog::rejected()

      This signal is emitted when the dialog has been rejected either by the user or by calling reject() or done() with the QDialog::Rejected argument.

      When the QFileDialog is canceled the imgSrc string is empty, I double checked that. The code inside the statement should be executed. What could I possibly do wrong???

      1 Reply Last reply
      0
      • SGaistS Offline
        SGaistS Offline
        SGaist
        Lifetime Qt Champion
        wrote on last edited by
        #7

        Hi,

        How are you using your dialog ?

        Interested in AI ? www.idiap.ch
        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

        1 Reply Last reply
        0
        • SikarjanS Offline
          SikarjanS Offline
          Sikarjan
          wrote on last edited by
          #8

          Hi,

          I call the dialog as a modal dialog:

          void MainWindow::on_actionImage_triggered()
          {
              CodeEditor *mEditor = checkForEditor();
              InsertImageDialog insertImage;
              insertImage.setModal(true);
              connect(&insertImage, SIGNAL(insertImage(QString,int,int,QString,QString)), mEditor, SLOT(insertImage(QString,int,int,QString,QString)));
              insertImage.exec();
          }
          
          1 Reply Last reply
          0
          • SGaistS Offline
            SGaistS Offline
            SGaist
            Lifetime Qt Champion
            wrote on last edited by
            #9

            Can you share the complete code of your dialog ?

            Interested in AI ? www.idiap.ch
            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

            1 Reply Last reply
            0
            • SikarjanS Offline
              SikarjanS Offline
              Sikarjan
              wrote on last edited by
              #10

              Hi,

              while trying to build minimal example I found the issue but not the solution. I am calling the on_pushButton_clicked() at the end of the constructor because selecting a file is the first thing the user needs to do. I guess the constructor is not finished while the user picks a file and therefore the reject is not available at the point.

              How can I call the pushButton event directly after the dialog is opened?

              mrjjM 1 Reply Last reply
              0
              • SikarjanS Sikarjan

                Hi,

                while trying to build minimal example I found the issue but not the solution. I am calling the on_pushButton_clicked() at the end of the constructor because selecting a file is the first thing the user needs to do. I guess the constructor is not finished while the user picks a file and therefore the reject is not available at the point.

                How can I call the pushButton event directly after the dialog is opened?

                mrjjM Offline
                mrjjM Offline
                mrjj
                Lifetime Qt Champion
                wrote on last edited by
                #11

                @Sikarjan said in Close QDialog by code:

                How can I call the pushButton event directly after the dialog is opened?

                What about letting the user press the Select Image button ?

                If you really want to popup automatically, you can use a timer.
                QTimer::singleShot(5000, this, SLOT(your_slot_function()));

                there is also
                showEvent(QShowEvent * event )
                ( you must implement in InsertImageDialog )

                1 Reply Last reply
                1
                • SikarjanS Offline
                  SikarjanS Offline
                  Sikarjan
                  wrote on last edited by
                  #12

                  Thanks @mrjj the QTimer solution works but it is not very nice. First the Dialog opens and then with some delay the select file menu. There is always a delay, even if you put the time to 0 ms. Also the select file window is positioned oddly. It is not centered over the dialog.

                  I did not try the other solution suggested.

                  mrjjM 1 Reply Last reply
                  0
                  • SikarjanS Sikarjan

                    Thanks @mrjj the QTimer solution works but it is not very nice. First the Dialog opens and then with some delay the select file menu. There is always a delay, even if you put the time to 0 ms. Also the select file window is positioned oddly. It is not centered over the dialog.

                    I did not try the other solution suggested.

                    mrjjM Offline
                    mrjjM Offline
                    mrjj
                    Lifetime Qt Champion
                    wrote on last edited by mrjj
                    #13

                    @Sikarjan
                    Well the whole idea of popping the image dialog over
                    another dialog is a bit unusual so that might also be the reason its not working super well. :)

                    showEvent might be triggered multiple times so make sure u handle that.

                    I wonder if u just can do it like

                    QString imgSrc = QFileDialog::getOpenFileName(this, tr("Select image"), mPath, tr("Image Files (*.png *.jpg .gif);; All files ()"));
                    if( ! imgSrc.isEmpty()) { // if NOT empty
                    TheOTherdialog dia;
                    if ( dia.exec() ) {
                    // do code
                    }
                    }

                    So ask image name.
                    If selected something
                    pop the dialog and do X
                    if ok to dialog, process

                    1 Reply Last reply
                    2
                    • SikarjanS Offline
                      SikarjanS Offline
                      Sikarjan
                      wrote on last edited by
                      #14

                      I see. I should open the dialog only when I have a valid file selected. Sure, that would be possible. It would be a bit more code since I have to do the select and check twice, once in the mainWindow and once in the dialog.

                      Thanks for the idea, did not think about that. =)

                      1 Reply Last reply
                      0

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved