0
我有一個MainWindow
它在構造函數中調用LoginWindow。 LoginDialog
有一個按鈕來創建一個帳戶,該帳戶將創建一個QDialog
。隱藏窗口時Qt退出
我想隱藏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
將顯示,它不會崩潰。
隱藏和顯示 – Davlog
@Davlog當它仍然崩潰啊,你隱藏父對話框當你打開創建一個帳戶,另一個模式子對話框?那麼,如果你只是調用'dlg.show()'而不是調用'dlg.exec()'呢? – vahancho
嗯......我用dlg.show()替換了if語句,但它仍然崩潰。 – Davlog