qt-interest@trolltech.com
[Top] [All Lists]

Re: [Qt-interest] Hiding a QDialog?

Subject: Re: [Qt-interest] Hiding a QDialog?
From: "Scott Aron Bloom"
Date: Tue, 29 Jun 2010 21:06:16 -0700

But I am trying to hide the complete dialog.  I want the whole dialog to hide while the actual processing of the dialogs data occurs..

 

Once its done processing if everything went ok, accept is called.

 

If something went wrong during the processing, the dialog is reshown. And the cycle can begin again.


Scott

 

From: prashant bhutani [mailto:prashantbhutani2008@xxxxxxxxx]
Sent: Tuesday, June 29, 2010 9:03 PM
To: Scott Aron Bloom
Subject: Re: [Qt-interest] Hiding a QDialog?

 

Try btn->hide() and btn->show() instead of simple hide and show

On Wed, Jun 30, 2010 at 3:36 AM, Scott Aron Bloom <Scott.Bloom@xxxxxxxxxxxxx> wrote:

I have a startup/login dialog, that after the user hits OK, I would like to hide(), showing messages onto the QSplashScreen.

 

If however, there is a problem logging in, a message box pops up, then I show() dialog and would like to continue.

 

Here is the rub, when you hide a dialog, it sets the exit flag in the QDialog’s event loop.  So the next time the dialogs event loop cycles, it exits out.

 

Is there anyway, to restart the event loop?

 

Scott

 

PS. Here is code to duplicate the problem’

 

#include <QApplication>

#include <QPushButton>

#include <QMessageBox>

#include <QVBoxLayout>

#include <QLabel>

 

class Dialog : public QDialog

{

public:

      Dialog( QWidget * parent=NULL ) :

            QDialog( parent )

      {

            QLabel * label = new QLabel( "Hello World" );

            QPushButton * btn = new QPushButton( "Push Here" );

            connect( btn, SIGNAL( clicked() ), this, SLOT( accept() ) );

 

            QVBoxLayout * layout = new QVBoxLayout( this );

            layout->addWidget( label );

            layout->addWidget( btn );

      }

 

      virtual void accept()

      {

            hide(); // comment this out, and everything works

            QMessageBox::warning( this, "Error logging in", QString( "The user credentials don't match. Please check user name and password" ) );

            show();

            return;

      }

};

 

int main( int argc, char ** argv)

{

      QApplication appl( argc, argv );

      Dialog dlg;

      int retVal = dlg.exec();

      return retVal;

}

 


_______________________________________________
Qt-interest mailing list
Qt-interest@xxxxxxxxxxxxx
http://lists.trolltech.com/mailman/listinfo/qt-interest


--
Prashant Bhutani

_______________________________________________
Qt-interest mailing list
Qt-interest@xxxxxxxxxxxxx
http://lists.trolltech.com/mailman/listinfo/qt-interest
<Prev in Thread] Current Thread [Next in Thread>