1

我遇到了这个问题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);

OK 按钮仍被标记为默认值。

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

有没有办法做到这一点?

4

1 回答 1

1

我建议您使用QMessageBox::setDefaultButton它来设置 first QPushButton,它是您的子级QMessageBox,默认如下:

if (!box.detailedText().isEmpty())
        box.setDefaultButton(box.findChildren<QPushButton *>().first());
于 2018-10-13T03:52:04.850 回答