在 Qt 中,将子窗口设置为模态窗口可以阻止用户与主窗口进行交互,直到子窗口关闭。
1. 使用QDialog
作为子窗口并设置为模态
QDialog
类本身就支持模态和非模态显示,通过调用 exec()
方法可以将其设置为模态窗口,调用 show()
方法则为非模态窗口。
dialog.exec(); // 设置为模态窗口
2. 使用QWidget
作为子窗口并模拟模态行为
如果使用 QWidget
作为子窗口,可以通过一些额外的操作来模拟模态窗口的行为。
ChildWidget *widget = new ChildWidget(this);
widget->setWindowModality(Qt::ApplicationModal); // 设置为应用程序模态
widget->show();
-
总结
- 使用
QDialog
时,调用exec()
方法是最简单的设置模态窗口的方式。 - 使用
QWidget
时,可以通过setWindowModality()
方法模拟模态窗口的行为。