模态对话框VS非模态对话框
代码实现
例如:在MainWindow中,利用pushButton打开新的对话框
void MainWindow::on_pushButton_clicked() {
//非模态对话框 QDialog *dlg = new QDialog(this); dlg->setWindowTitle("非模态对话框"); dlg->setFixedSize(300,200); dlg->show(); //模态对话框1 QDialog dlg1(this); dlg1.setWindowTitle("模态对话框1"); dlg1.setFixedSize(200,100); dlg1.exec();//exec()函数只有在窗口被关闭后才会返回(代码继续执行) //模态对话框2 QDialog *dlg2 = new QDialog(this); dlg2->setModal(true); dlg2->setWindowTitle("模态对话框2"); dlg2->setFixedSize(200,100); dlg2->show(); }
运行效果:
那么如果交换两个模态对话框代码顺序会怎么样呢
void MainWindow::on_pushButton_clicked() {
//非模态对话框 QDialog *dlg = new QDialog(this); dlg->setWindowTitle("非模态对话框"); dlg->setFixedSize(300,200); dlg->show(); //模态对话框2 QDialog *dlg2 = new QDialog(this); dlg2->setModal(true); dlg2->setWindowTitle("模态对话框2"); dlg2->setFixedSize(200,100); dlg2->show();//两个窗口同时弹出,掉用完show()函数把控制权交给调用者 //模态对话框1 QDialog dlg1(this); dlg1.setWindowTitle("模态对话框1"); dlg1.setFixedSize(200,100); dlg1.exec();//第一个窗口关闭第二个才会弹出,exec()函数只有在窗口被关闭后才会返回 }
运行效果:
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/210591.html原文链接:https://javaforall.net
