Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt
  • Unsolved
Collapse
qtws26_logo

The Qt Event of the Year: Qt World Summit 2026

Save Your Spot >
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Close QDialog by code
Qt 6.12 LTS is out! See what's new in the release blog

Close QDialog by code

Scheduled Pinned Locked Moved Solved General and Desktop
14 Posts 4 Posters 9.2k 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
    • ? Offline
      ? Offline
      A Former User
      wrote on last edited by A Former User
      #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
        • ? Offline
          ? Offline
          A Former User
          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
            • ? Offline
              ? Offline
              A Former User
              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
              • ? A Former User

                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
                0
                • ? Offline
                  ? Offline
                  A Former User
                  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
                  • ? A Former User

                    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
                    1
                    • ? Offline
                      ? Offline
                      A Former User
                      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
                      • Unsolved