我试图在Kubuntu 14.04的Qt5程序(Qt 5.5.1)中使用QDialogButtonBox
中的图标制作自定义按钮。阅读this answer,我知道不建议只编辑库存按钮,因此我使用QDialogButtonBox::addButton
和我的自定义按钮。但出于某种原因,虽然我确实成功更改了库存按钮的图标,但在使用QPushButton::setIcon
后,我的自定义按钮仍然没有任何图标。
这是代码
#include <QApplication>
#include <QDialogButtonBox>
#include <QPushButton>
int main(int argc, char** argv)
{
QApplication app(argc,argv);
QDialogButtonBox bbox(QDialogButtonBox::Close);
const auto button=new QPushButton(QObject::tr("Convert..."));
bbox.addButton(QObject::tr("Convert..."), QDialogButtonBox::ApplyRole);
const auto icon=QIcon::fromTheme("system-run");
// This doesn't work - the button remains without icon
button->setIcon(icon);
// But this does
bbox.button(QDialogButtonBox::Close)->setIcon(icon);
bbox.show();
return app.exec();
}
我做错了什么?如何在我的自定义按钮上显示图标而无需编辑库存按钮?
答案 0 :(得分:4)
您正在创建两个按钮。您没有在任何地方显示的一个按钮,以及您在bbox
中添加的按钮。并且您正在设置您未在任何地方显示的按钮的图标。
修复您的代码,这样您就不会创建两个单独的按钮,并为您放入bbox
的按钮设置一个图标:
QPushButton *button = bbox.addButton(QObject::tr("Convert..."), QDialogButtonBox::ApplyRole);
...
button->setIcon(icon);