[Qt-interest] Hiding a QDialog?

Jan janusius at gmx.net
Wed Jun 30 10:29:05 CEST 2010


Actually I am doing something like this. It seems to work. Though I read 
using "goto" is regarded as "bad code".

QDialog dlg;

:start
if (dlg.exec() != QDialog::Accepted)
	return;

if (dlg.somethingIsWrong())
	goto start;

Jan



Am 30.06.2010 06:06, schrieb Scott Aron Bloom:
> 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 at gmail.com]
> 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 at onshorecs.com>  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 at trolltech.com
> 	http://lists.trolltech.com/mailman/listinfo/qt-interest
>
>
>
>
>
> _______________________________________________
> Qt-interest mailing list
> Qt-interest at trolltech.com
> http://lists.trolltech.com/mailman/listinfo/qt-interest



More information about the Qt-interest-old mailing list