如何在QMessageBox的按钮上移除图标

3

有一个带有三个按钮的输出消息:

QMessageBox messageBox(QMessageBox::Question, tr(""), tr(""), QMessageBox::No | QMessageBox::Yes | QMessageBox::Cancel, this);
messageBox.setButtonText(QMessageBox::No, tr("1"));
messageBox.setButtonText(QMessageBox::Yes, tr("2"));
messageBox.setButtonText(QMessageBox::Cancel, tr("Cancel"));
auto response = messageBox.exec();

请问如何删除在红色框中突出显示的标准图标

enter image description here


你使用的Qt版本是哪个?我不知道有一个叫做setButtonText()的方法。 - RoQuOTriX
@RoQuOTriX,版本5.15.2 - Alex Rebell
好的,我找到了这个函数。它已经过时了。我的解决方案似乎可行? - RoQuOTriX
@RoQuOTriX,是的,原则上结果是你所需要的。但你能告诉我如何进一步追踪这些按钮的按下情况吗?例如,之前我做了这个: auto response = messageBox.exec(); if (response == QMessageBox::Yes) { .... }else if (response == QMessageBox::No){ ... }ifelse 块中,我指定了按下按钮时的操作。现在我不明白如何正确地指定它们。谢谢。 - Alex Rebell
1
我现在无法调试它,而且我很久以前就不再使用Qt进行开发了。但是我认为调试器可以告诉您每个键收到了哪种类型的响应。我认为它们应该与以前相同。或者也许看一下clickedButton()方法。我认为这是您真正的场景,并且与@Serhiy Kulish的实现匹配:https://doc.qt.io/qt-5/qmessagebox.html#clickedButton - RoQuOTriX
我使用链接找到了我的问题的答案。谢谢。 - Alex Rebell
2个回答

4

你可以试试:

QMessageBox messageBox(this);
messageBox.addButton(tr("1"), QMessageBox::NoRole);
messageBox.addButton(tr("2"), QMessageBox::YesRole);
messageBox.addButton(tr("Cancel"), QMessageBox::RejectRole);
auto response = messageBox.exec();

3

我在Windows上无法重现它,但你可以尝试向消息框添加自定义按钮。

QMessageBox messageBox(QMessageBox::Question, tr(""), tr(""), QMessageBox::NoButton, this);

QPushButton* noButton = new QPushButton(&messageBox);
noButton->setText(tr("1"));
messageBox.addButton(noButton, QMessageBox::NoRole);

QPushButton* yesButton = new QPushButton(&messageBox);
yesButton->setText(tr("2"));
messageBox.addButton(yesButton, QMessageBox::YesRole);

QPushButton* cancelButton = new QPushButton(&messageBox);
cancelButton->setText(tr("Cancel"));
messageBox.addButton(cancelButton, QMessageBox::RejectRole);

auto response = messageBox.exec();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接