如何移除QMessageBox按钮上的标准图标
解决方案
你可以通过以下两种常用方法移除QMessageBox按钮上的默认标准图标,两种方法均兼容Qt5、Qt6版本:
方法1:通过样式表批量移除(推荐,操作最简单)
在调用exec()方法前,给QMessageBox对象设置样式表即可批量清空所有内部按钮的图标:
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")); // 新增样式表代码 messageBox.setStyleSheet("QMessageBox QPushButton { icon: none; }"); auto response = messageBox.exec();
该方法只会作用于当前弹窗内的按钮,不会影响项目内其他窗口的按钮样式。
方法2:逐个获取按钮清空图标(适合需要保留部分按钮图标的场景)
如果只需要移除特定按钮的图标,可以单独获取对应按钮的指针,手动设置空图标:
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")); // 逐个设置按钮空图标 messageBox.button(QMessageBox::No)->setIcon(QIcon()); messageBox.button(QMessageBox::Yes)->setIcon(QIcon()); messageBox.button(QMessageBox::Cancel)->setIcon(QIcon()); auto response = messageBox.exec();
内容的提问来源于stack exchange,提问作者Alex Rebell
相关产品推荐
相关产品推荐

