在QDialog中,有几种不同的模式可供选择,决定了对话框的行为和用户交互方式。
1.模态对话框(Modal Dialog)
使用setModal(true)或exec()方法显示的对话框。模态对话框会阻止用户与其他窗口进行交互,直到对话框被关闭。这通常用于要求用户完成某项操作后才能继续。用户必须关闭对话框才能继续与主窗口交互。
void MainWindow::on_pushButton_clicked()
{
MyDialog dialog;
dialog.setModal(true);
dialog.exec();
}
2.非模态对话框(Modeless Dialog)
使用show()方法显示的对话框。非模态对话框不会阻止用户与其他窗口进行交互,用户可以同时处理多个窗口。
void MainWindow::on_pushButton_clicked()
{
MyDialog *dialog = new MyDialog;
dialog->setWindowModality(Qt::NonModal);
dialog->show();
}
其中模态对话框
不同模态模式可以通过 setWindowModality() 方法进行设置
a.应用程序模态(Application Modal)
调用setWindowModality(Qt::ApplicationModal)方法设置对话框为应用程序模态。此模式下,对话框会阻止用户与整个应用程序中的其他窗口进行交互,但允许切换到其他应用程序。
void MainWindow::on_pushButton_clicked()
{
MyDialog dialog(this);
dialog->setWindowModality(Qt::ApplicationModal);
dialog.setModal(true);
dialog.exec();
}
b.窗口模态(Window Modal)
调用setWindowModality(Qt::WindowModal)方法设置对话框为窗口模态。在这种模式下,对话框只阻止用户与它所在的父窗口进行交互,而不是整个应用程序。
void MainWindow::on_pushButton_clicked()
{
WindowModalDialog *dialog = new WindowModalDialog(this);
dialog->setWindowModality(Qt::WindowModal);
dialog->exec();
}
坚持信念,不仅要自己熟悉和会用,更要分享出来让大家会用!
更重要的是能力有限,诚邀大家补充,互相学习!