gpt4 book ai didi

c++ - 出现对话框时如何关闭主窗口

转载 作者:太空宇宙 更新时间:2023-11-03 10:24:33 25 4
gpt4 key购买 nike

我正在制作一个测试程序,其中 MainWindow 用作登录屏幕。用户输入用户名和密码。如果它们与分配给字符串的内容相匹配,则会出现对话框。如果失败,则会出现 QMessageBox。

我的问题是,当我希望对话框出现(主程序)时,我希望登录页面消失。命令关闭();只会关闭所有内容。

这是 MainWindow.cpp 的代码(对话框在 header 中被引用为一个名为 mDialog 的指针)

 void MainWindow::on_pushButton_clicked()
{
if (ui->lineEdit->text() == username)
{
if (ui->lineEdit_2->text() == password)
{
//This is where the Dialog appears
mDialog= new MyDialog(this);
mDialog->show();
}
}
else if (ui->lineEdit->text() != username || ui->lineEdit->text() ==NULL)
{
if (ui->lineEdit_2->text() != password || ui->lineEdit_2->text() == NULL)
{
QMessageBox::warning(this, "Error", "The username or password is incorrect.");
}
}
}

这是main.cpp的代码

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();

return a.exec();
}

最佳答案

在 Qt 中如果 parent 被销毁,children 也会被销毁,所以如果你将它作为参数传递给 MyDialog,它将被摧毁。为了不破坏它,不要传递父级。

mDialog= new MyDialog(this) 更改为 mDialog= new MyDialog() 并将 close() 放在 show( )

函数看起来像:

...
mDialog= new QDialog();
mDialog->show();
close();
...

关于c++ - 出现对话框时如何关闭主窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41582361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com