c++ - 如何将图标设置为 QDialogBu​​ttonBox 中的新按钮?

标签 c++ qt button icons

我正在尝试在 Kubuntu 14.04 上的 Qt5 程序 (Qt 5.5.1) 中的 QDialogBu​​ttonBox 中制作一个带有图标的自定义按钮。读书this answer ,我知道不建议简单地编辑库存按钮,所以我将 QDialogBu​​ttonBox::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();
}

我做错了什么?如何在无需编辑库存按钮的情况下在我的自定义按钮上添加图标?

最佳答案

您正在创建两个按钮。一个不在任何地方显示的按钮,以及一个添加到 bbox 中的按钮。您正在为您没有在任何地方显示的按钮设置图标。

修正你的代码,这样你就不会创建两个单独的按钮,并为你放在 bbox 中的按钮设置一个图标:

QPushButton *button = bbox.addButton(QObject::tr("Convert..."), QDialogButtonBox::ApplyRole);
...
button->setIcon(icon);

关于c++ - 如何将图标设置为 QDialogBu​​ttonBox 中的新按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49028965/

相关文章:

c++ - 使用 C++ 和 Boost(或不使用?)检查是否正在使用特定端口?

c++ - 将重载运算符重构为非成员函数是否会破坏任何代码?

c++ - 如何从 qml 启动一个 Qthread?

c++ - Qt 的自定义系统托盘图标 "balloon tooltips"?

c++ - 手动停止 QDrag

wpf - 使用按钮导航到 NavigationWindow 中的另一个页面

flash - 如何管理主时间线上的动画片段按钮控件声音?

c++ - 从二进制文件 C++ 中读取二维 vector

c++ - 将字符串与 C++ 中的一组字符进行比较

Jquery UI 切换按钮(复选框)单击/拖动错误