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
-
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":http://doc.qt.nokia.com/4.7/qdialog.html#modeless-dialogs 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.
-
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
-
[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
-
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
-
[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.