一、模态与非模态
模态:启动模态界面时,例如弹出对话框强制用户从其他正在进行的业务中聚焦到当前对话框,除了该对话框整个应用程序窗口都无法接受用户响应,无法切换界面,无法切换当前Qt应用。这可以保证用户按照自己设计的操作逻辑进行动作。只有关闭和退出该模态界面,才可以访问本应用程序的其他界面和功能。
非模态:与模态相反,默认状态为非模态,即可以随意切换,可以在同一应用下的各个窗口界面任意切换。
半模态:介于二者之间,冻结窗口界面,但其他应用继续执行响应。
二、使用方法
Qt中的QWidget对象自带setWindowModality(type)方法,用以设置窗口模态类型。
参数type可选为一下三种:
- Qt::NonModal 非模态:正常模式
- Qt::WindowModal 半模态:窗口级模态对话框,阻塞父窗口、父窗口的父窗口及兄弟窗口。
- Qt::ApplicationModal 模态:应用程序级模态对话框,阻塞整个应用程序的所有窗口。
三、代码示例
void MainWindow::on_toolButton_NewWidget_clicked()
{Widget_ui *new_ui = new Widget_ui(this);//创建新界面窗口new_ui->setWindowModality(Qt::ApplicationModal);//设置模态connect(new_ui,&new_ui->Tx_NewSig,this,&MainWindow::Rx_NewSig);//绑定当前界面的信号槽new_ui->show();//显示当前新创建的界面窗口
}