我有一个 QDialog,我阅读了很多关于 show()、exec() 和 open() 的区别。不幸的是,我从未找到在运行时更改对话框模式的解决方案。我有一个应用程序,从那里开始我的 QDialog。我在这个对话框中有一个切换按钮,点击它 QDialog 应该改变模式,以便可以与应用程序交互 - 但这不应该一直发生 - 只是在选中切换按钮时。
有没有可能?我无法通过设置 setModal(true/false) 来解决问题,这只允许我以模态方式启动它,切换按钮并将其设置为非模态,但随后我无法返回模态。
这里有一些代码:
启动对话框:
从主窗口:
_dialog = new ToggleModalDialog(this, id, this);
_dialog->setWindowModality(Qt::ApplicationModal);
_dialog->open();
在 ToggleModalDialog 的切换插槽中
void ToggleModalDialog::changeModality(bool checkState)
{
if(checkState)
{
this->setWindowModality(Qt::NonModal);
ui->changeModalityButton->setChecked(true);
this->setModal(false);
}
else
{
this->setWindowModality(Qt::ApplicationModal);
ui->changeModalityButton->setChecked(true);
}
提前致谢!