出现对话框时如何关闭主窗口
How to close the main window when a dialog appears
我正在制作一个测试程序,其中MainWindow用作登录屏幕。用户键入用户名和密码。如果它们与字符串分配给的内容匹配,则会显示对话框。如果失败,则会显示一个 QMessageBox。
我的问题是当我希望出现对话框(主程序)时,我希望登录页面消失。命令关闭();只会关闭一切。
下面是 MainWindow 的代码.cpp(对话框在标头中作为名为 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.");
}
}
}
这是主代码.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();
...
您应该将对话框显示为登录名,将主窗口显示为主程序。如果登录成功,请显示主窗口,而不是相反。关闭主窗口将关闭程序。
我已经做了你想做的事情。您可以按照我上面所说的操作,或者另一种选择是使用 QLabel 在主窗口中创建登录屏幕。您可以将图像添加到 Qlabel(纯色图像或任何您喜欢的图像)并使其设置为窗口的大小以阻止主程序的视图。然后,您可以添加行编辑和按钮或任何您想要的内容。如果登录成功,可以关闭图像,标签和按钮以显示主程序。我使用正则表达式检查了输入。
使用 this->close()
关闭当前窗口,但在 MyDialog 的构造函数中,不要向构造函数传递任何内容。默认情况下,构造函数会将 0 传递给父参数,因此对话框将没有父参数。
如果您的主程序是对话框,您可以在显示之前打开带有用户名/密码字段的登录对话框。
main 函数的伪代码(LoginDialog 和 MainDialog 继承 QDialog):
QApplication a(argc, argv);
LoginDialog lDialog;
lDialog.exec(); // Modal dialog behavior. Stopped at this line while it not closed (QDialog::close())
if (lDialog.getUsername() != username || lDialog.getPassword() != password)
{
return 0;
}
MainDialog mDialog;
mDialog.show();
return a.exec();
您可以将窗口可见性设置为 false。
mainwindow.setVisible(false)
- Gtkmm - 关闭窗口然后显示另一个窗口的正确方法
- GLFW 获取密钥"esc"并关闭窗口
- XCB_POLL_FOR_EVENT未检测到关闭窗口的XCB_CLIENT_MESSAGE事件
- 如何在关闭C++窗口之前转储游戏数据
- Qt-如何在不使用插槽的情况下检测自定义事件循环中的关闭窗口
- QT 关闭窗口 QTest 在锁定线程中
- Xlib:关闭窗口总是会导致致命的 IO 错误
- 关闭窗口不会最小化我刚刚启动的进程的窗口
- 如何在不影响 ALT+F4 或在任务栏中关闭窗口的情况下重新调整窗口关闭按钮的用途?
- 在构建视觉工作室后关闭窗口
- QT油漆工更新,计时器仅在关闭窗口时更新
- 无法创建关闭窗口程序C++
- 等待事件关闭窗口
- FLTK关闭窗口
- 无法关闭窗口
- Qt -程序仍然在任务管理器中运行时,我关闭窗口期间qApp-> procesevents()
- 面向对象的关闭窗口方法
- 如何判断用户是否试图用C++关闭窗口
- 如何用c++在屏幕键盘上关闭窗口
- glfwDestroyWindow不会关闭窗口