我有一个MainWindow
在构造函数中调用 LoginWindow 的方法。有一个按钮来创建一个帐户,该LoginDialog
帐户将创建一个QDialog
.
我想隐藏LoginDialog
新帐户的对话框正在显示但不知何故崩溃。
当我删除隐藏和显示函数的第一行和最后一行时,LoginDialog
它绝对没问题。为什么它会崩溃hide()
并被show()
调用?
void LoginDialog::createAccount()
{
// (-> will cause crash later) hide(); //Hides LoginDialog
QDialog dlg;
dlg.setGeometry( this->x(), this->y(), this->width(), this->height() );
QWidget* centralWidget = new QWidget( &dlg );
QVBoxLayout* l = new QVBoxLayout( centralWidget );
dlg.setLayout( l );
QLineEdit *dlgUser = new QLineEdit( centralWidget );
QLineEdit *dlgPass = new QLineEdit( centralWidget );
dlgPass->setEchoMode( QLineEdit::Password );
l->addWidget( new QLabel( tr("Username :"), centralWidget ) );
l->addWidget( dlgUser );
l->addWidget( new QLabel( tr("Password :"), centralWidget ) );
l->addWidget( dlgPass );
l->addWidget( new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, centralWidget ) );
if( dlg.exec() != QDialog::Rejected )
{
;
}
delete centralWidget;
// (-> will cause crash later) show(); //Show LoginDialog again
}
没有错误,它只是意外崩溃,有时它会以代码(0)退出。
当使用调试器进行分析并真正完成每一步时,它不会崩溃。将LoginDialog
显示,它不会崩溃。