Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    Independence between dialog and application windows

    General and Desktop
    6
    14
    5542
    Loading More Posts
    • 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.
    • R
      RSousa last edited by

      Hello
      I’m trying to include a dialog window in an application. Basically, I have a window (application window) that calls a dialog window. I´ve done that but when the dialog window is active I cannot turn application window active(push buttons for example). I only get that by closing the dialog window. What I would like to get is a totally independence between the application window and the dialog window.
      Could somebody help me?

      Many thanks !

      Ricardo Sousa

      1 Reply Last reply Reply Quote 0
      • A
        andre last edited by

        This is dependent on the way you show your second form. Currently, it seems that you are using a modal form. You have used exec() to show it, I guess. To make it so that you can interact with both windows after showing, you need to make sure you do not create a modal window. You can do that by using show() and making sure that modal() is still false (it is by default).

        1 Reply Last reply Reply Quote 0
        • G
          goetz last edited by

          Call show() instead of exec() on your QDialog subclass. You might also set the parent of the dialog to 0 (don't forget to manually delete the dialog then, as it's not deleted automatically be Qt in this case). See QDialog's docs on "Modeless Dialogs":http://doc.qt.nokia.com/4.7/qdialog.html#modeless-dialogs for further details.

          http://www.catb.org/~esr/faqs/smart-questions.html

          1 Reply Last reply Reply Quote 0
          • T
            tobias.hunger last edited by

            http://doc.qt.nokia.com/latest/qdialog.html has lots of information about dialogs in Qt. The section on modal dialogs is of special interest to you.

            1 Reply Last reply Reply Quote 0
            • R
              RSousa last edited by

              Hi,

              Thank you for your answers.:)

              In fact, I was using exec(). :)
              The dialog window is non-modal.
              I've changed to show() but the dialog window opens and suddenly closes...
              I'm calling this dialog window from a menu.

              Could you help me.

              Many thanks!

              All the best

              Ricardo Sousa

              1 Reply Last reply Reply Quote 0
              • G
                giesbert last edited by

                Please show us the code where you show your dialog.
                I'm sure, it's pretty easy.
                Perhaps, the dialog is creatot on the stack and not by new?

                Nokia Certified Qt Specialist.
                Programming Is Like Sex: One mistake and you have to support it for the rest of your life. (Michael Sinz)

                1 Reply Last reply Reply Quote 0
                • A
                  andre last edited by

                  If it suddenly closes, perhaps you are creating your item on the stack instead of on the heap?

                  1 Reply Last reply Reply Quote 0
                  • I
                    ivan.todorovich last edited by

                    [quote author="Andre" date="1300904949"]If it suddenly closes, perhaps you are creating your item on the stack instead of on the heap?[/quote]

                    That's exactly my thought

                    o_o Sorry for my rusted english.

                    1 Reply Last reply Reply Quote 0
                    • R
                      RSousa last edited by

                      This is the code....
                      @
                      //---
                      connect(ui->actionSpectrogram,SIGNAL(toggled(bool)),this,SLOT(VerMenuSpectrogram()));

                      //------
                      void MainWindow::VerMenuSpectrogram(){

                      Ui_Spectrogram *ui_Spect;
                      ui_Spect= new Ui_Spectrogram();
                      QDialog D;
                      ui_Spect->setupUi(&D);
                      D.show();

                      }
                      @

                      I really thank you!

                      Ricardo Sousa

                      Edit: Fixed code layout. Please use the @ tags; Andre

                      1 Reply Last reply Reply Quote 0
                      • A
                        andre last edited by

                        My diagnoses was correct. You are creating your dialog on the stack instead of on the heap.

                        1 Reply Last reply Reply Quote 0
                        • R
                          RSousa last edited by

                          How do you know that...?:)

                          1 Reply Last reply Reply Quote 0
                          • A
                            andre last edited by

                            [quote author="RSousa" date="1301053052"]How do you know that...?:)[/quote]

                            I read the piece of code you posted, of course :-)

                            Look at line 10 of the snippet you just posted. What happens there? You create a variable called D on the stack. What happens once your code reaches line 13? That variable goes out of scope, and gets removed from the stack again. C++, the nice language it is, thoughtfully calls the destructor for the class in question for you (QDialog). Boom! Your dialog is gone again.

                            1 Reply Last reply Reply Quote 0
                            • G
                              goetz last edited by

                              Because he knows the difference between stack and heap allocation. You obviously do not, so time to get some good C++ introduction and learn the basics.

                              Some keywords for google:

                              • stack allocation
                              • heap allocation
                              • scope of variable

                              http://www.catb.org/~esr/faqs/smart-questions.html

                              1 Reply Last reply Reply Quote 0
                              • R
                                RSousa last edited by

                                Now I can see.... it works now.... I'm embarassed .... :)

                                I need vacations.....

                                I really thank you for all!

                                All the best!!!

                                Ricardo Sousa

                                1 Reply Last reply Reply Quote 0
                                • First post
                                  Last post