Independence between dialog and application windows
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
13 replies
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).
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 [doc.qt.nokia.com] for further details.
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.
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
How do you know that…?:)
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.
You must log in to post a reply. Not a member yet? Register here!



