qt - 在 QMessageBox 中添加详细文本会禁用关闭 (X) 按钮

标签 qt qmessagebox

我注意到一件有趣的事情 - 如果我向 QMessageBox(添加“显示详细信息...”按钮)添加详细文本,然后执行它将显示系统框架的关闭(X)按钮已禁用,因此将此窗口标记为不可关闭(右键单击框架 -> 关闭禁用)。

下面是一些示例代码:

QMessageBox box(QMessageBox::Critical, title, text, QMessageBox::Ok);
box.setDetailedText(detailedText); // comment this line to get close button enabled
box.exec();

我什至没有找到在 Qt 中手动执行此操作的方法。有任何想法吗?

谢谢

最佳答案

我在 Python 2.7 和 PySide 上遇到了同样的问题。

在此示例中,红色关闭按钮按预期工作:

from PySide import QtGui, QtCore
import sys

app = QtGui.QApplication(sys.argv)

message_box = QtGui.QMessageBox()
message_box.setWindowTitle("Close Test")
message_box.setText("Testing whether or not the red X is enabled.")

ret = message_box.exec_()

添加详细文本会禁用关闭按钮:
from PySide import QtGui, QtCore
import sys

app = QtGui.QApplication(sys.argv)

message_box = QtGui.QMessageBox()
message_box.setWindowTitle("Close Test")
message_box.setText("Testing whether or not the red X is enabled.")
message_box.setDetailedText("These details disable the close button for some reason.")

ret = message_box.exec_()

标记为解决方案的答案并没有解决这个问题。正如您在此示例中看到的,关闭按钮保持禁用状态:
from PySide import QtGui, QtCore
import sys

app = QtGui.QApplication(sys.argv)

message_box = QtGui.QMessageBox()
message_box.setWindowTitle("Close Test")
message_box.setText("Testing whether or not the red X is enabled.")
message_box.setDetailedText("These details disable the close button for some reason.")

message_box.setWindowFlags(message_box.windowFlags() & ~QtCore.Qt.WindowCloseButtonHint)

ret = message_box.exec_()

答案是设置标准按钮并设置退出按钮:
from PySide import QtGui, QtCore
import sys

app = QtGui.QApplication(sys.argv)

message_box = QtGui.QMessageBox()
message_box.setWindowTitle("Close Test")
message_box.setText("Testing whether or not the red X is enabled.")
message_box.setDetailedText("These details disable the close button for some reason.")

message_box.setStandardButtons(QtGui.QMessageBox.Ok)
message_box.setDefaultButton(QtGui.QMessageBox.Ok)
message_box.setEscapeButton(QtGui.QMessageBox.Ok)

ret = message_box.exec_()

这将恢复所需的关闭按钮行为。

关于qt - 在 QMessageBox 中添加详细文本会禁用关闭 (X) 按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7543258/

相关文章:

c++ - 如何裁剪 QComboBox 中的文本或如何获取其实际宽度?

qt - 什么决定了 QMessageBox 的默认标题?

c++ - 通过显示错误消息 C++ 和 Qt 自定义异常

c++ - Qt 4.7 和 4.8 之间的 OpenSceneGraph 性能

c++ - 条件变量与局部互斥体的奇怪使用

c++ - 如何使用 QT 和 C++ 启动应用程序

c++ - 如何在各种显示器上使用 Qt/C++ 获取打印屏幕?

windows - 使用 QNetworkAccessManager 的 post() 方法上传文件

c++ - QErrorMessage 不断出现