【问题标题】:QMessageBox you can select text fromQMessageBox 您可以从中选择文本
【发布时间】:2015-09-15 15:19:21
【问题描述】:

有没有什么方法可以显示QMessageBox 具有可选文本,以便用户能够使用鼠标或键盘以某种方式选择和复制其内容?我知道我可以创建标签来做到这一点,但不确定消息框。 MS Windows 中的标准消息框似乎绝对不允许这样做。

【问题讨论】:

  • QMessageBoxsetTextInteractionFlags 设置为Qt::TextSelectableByMouse 怎么样?

标签: qt


【解决方案1】:

您需要启用TextSelectableByMouse交互标志:

QMessageBox mb(QMessageBox::NoIcon, "New message",
               "A lot of text", QMessageBox::Ok, this);
mb.setTextInteractionFlags(Qt::TextSelectableByMouse);
int dialogResult = mb.exec();

【讨论】:

  • 这似乎不适用于 Qt4。 错误 C2039:“setTextInteractionFlags”:不是“QMessageBox”的成员
  • 我看到这是在 Qt-5.1 中添加的。我不得不使用样式表,因为由于复杂的库依赖关系,我无法在我正在处理的应用程序中使用 Qt5。
【解决方案2】:

我更喜欢使用样式表来解决这个问题。
运行一次,这将影响在应用程序中任何位置创建的所有消息框:

qApp->setStyleSheet("QMessageBox { messagebox-text-interaction-flags: 5; }");

我已经用 Qt 5.5 for OS X 对此进行了测试,它可以工作。

【讨论】:

  • 它是附加到现有样式表还是完全覆盖它?我不确定其他人是否还没有在该项目的某个地方使用过类似的代码。
  • 它会覆盖在QApplication 上应用的现有样式表。如果您已经在使用样式表,那么只需将此条目添加到您的文件中。
猜你喜欢
  • 2017-01-24
  • 1970-01-01
  • 2018-07-21
  • 2015-11-22
  • 1970-01-01
  • 2011-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多