【发布时间】:2011-11-24 11:43:44
【问题描述】:
我注意到一件有趣的事情 - 如果我向 QMessageBox 添加详细文本(添加“显示详细信息...”按钮)然后执行它将显示系统框架的关闭 (X) 按钮已禁用,因此将此窗口标记为非- 可关闭(右键单击框架 -> 关闭禁用)。
这里是一些示例代码:
QMessageBox box(QMessageBox::Critical, title, text, QMessageBox::Ok);
box.setDetailedText(detailedText); // comment this line to get close button enabled
box.exec();
我什至没有找到在 Qt 中手动执行此操作的方法。有什么想法吗?
谢谢
【问题讨论】:
-
现在这很奇怪,我刚刚在 OS X 和 Linux 上验证了它。我已经挖掘了 QMessageBox setDetailedText 的源代码,它并没有专门做任何明显的事情来阻止闭包。我唯一可以建议的事情是观察单击和覆盖时发送的关闭信号,或者子类化 QMessageBox。
-
你使用的是什么 Qt 版本?
-
我的是 4.5.2。稍后我也会尝试 4.7.X。
-
但是如果需要,您知道如何在某些对话框/窗口上完成此操作吗?我只知道一种通过 WindowFlags 删除关闭按钮但不让它存在但禁用的方法。这更多的是好奇而不是迫切的需要。
-
另一个有趣的例子是,如果您将
Yes、No、YesToAll和NoToAll按钮放在QMessageBox中。我认为这与当时的亲密模棱两可有关。如果我将No更改为Cancel,“red-x”会重新显示。
标签: qt qmessagebox