Qt 中的对话框有 3 种核心显示方式,其中只有exec()会阻塞主程序,show()和open()则不会:
| 显示方式 | 特性 | 是否锁死主程序 |
|---|---|---|
exec() |
阻塞式模态,暂停事件循环 | 是(主窗口无法操作) |
show() |
非模态,不阻塞事件循环 | 否(主窗口可正常交互) |
open() |
半模态,不阻塞事件循环但对话框模态 | 否(主窗口不可操作,但程序不锁死) |
cpp
// 创建对话框
QDialog *dalDlg = new QDialog(this);
// 对话框基础设置
dalDlg->setWindowTitle("对话框");
dalDlg->resize(300, 200);
dalDlg->show(); //不会阻塞主程序
dalDlg->exec(); //会阻塞主程序