[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