gpt4 book ai didi

c++ - 模态 QMessageBox 的行为不像 native Windows 对话框

转载 作者:太空狗 更新时间:2023-10-29 20:15:26 25 4
gpt4 key购买 nike

我的应用程序有一个对话框,通过 QMessageBox 询问用户是要放弃他所做的所有更改还是要继续编辑。我希望此对话框对整个应用程序都是模态的。

我在某处读到这是 QMessageBox 的标准行为,所以我不必用类似的东西明确地设置它:

mbox.setWindowModality(Qt::ApplicationModal);

我想知道为什么它的行为与操作系统(在我的例子中是 Windows 7)中的其他模式对话框不同。一方面,它的功能正常,即在用户回答对话框之前,应用程序中的所有其他输入法都被阻止。但是,如果用户单击应用程序的任何其他窗口,它不会“闪烁”*。有什么方法可以让 Qt 表现得像 native Windows 对话框吗?

提前致谢!


*如果您不明白我所说的“闪烁”是什么意思:只需在 Windows 操作系统上打开记事本,输入一些文本并尝试将其关闭。弹出一个对话框,要求保存、放弃或继续编辑。现在单击编辑器窗口中的某处 -> 对话框的边框和标题栏闪烁/闪烁几次。

最佳答案

当消息框没有父级时就会出现问题。这对我来说很好:

QMessageBox box(this);
box.setStandardButtons(QMessageBox::Close);
box.exec();

但这不是:

QMessageBox box;
box.setStandardButtons(QMessageBox::Close);
box.exec();

这是有道理的……消息框不会闪烁,除非它知道它的父级被点击了。

关于c++ - 模态 QMessageBox 的行为不像 native Windows 对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13118914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com