【问题标题】:How to set the default button to "Show details"?如何将默认按钮设置为“显示详细信息”?
【发布时间】:2018-10-12 12:46:55
【问题描述】:

我遇到了QMessageBox 的问题:

QMessageBox box;
box.setWindowTitle(tr("Warning box"));
box.setIcon(QMessageBox::Warning);
box.setText(tr("Something happened, see details or press OK"));
box.setDetailedText("There is a detail. World is not answering to Hello, try to say Hello world again!");
box.setStandardButtons(QMessageBox::Ok);
box.setDefaultButton(QMessageBox::NoButton);
box.exec();

如果我这样做:

box.setDefaultButton(QMessageBox::NoButton);

确定按钮仍被标记为默认值。

我没有找到QMessageBox::ShowDetails 枚举,所以我无法将Show details 按钮设置为默认按钮。

有没有办法做到这一点?

【问题讨论】:

  • 在我没有使用 setDefaultButton() 的情况下,默认按钮是See details ...,为什么你说默认选择 Ok 按钮?你能展示一张图片或一些证明它所说的内容吗?很高兴表明您的操作系统和 Qt5 版本
  • 感谢您的反馈。现在我在做另一个项目。我会尽快回复(在这周内)。
  • 真的很抱歉,伙计们。正在努力尝试。从那时起,a 并没有解决问题,因为它被标记为“不重要”。所以我远远落后于此。谢谢你的理解。感谢您的提示和建议。

标签: qt qpushbutton qmessagebox setdefault


【解决方案1】:

我建议您使用QMessageBox::setDefaultButton 来设置第一个QPushButton,它是您的QMessageBox 的子代,默认如下:

if (!box.detailedText().isEmpty())
        box.setDefaultButton(box.findChildren<QPushButton *>().first());

【讨论】:

  • 感谢您的建议。这周我会试试的。
猜你喜欢
  • 1970-01-01
  • 2019-04-16
  • 2016-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-17
相关资源
最近更新 更多