修复QToolButton图标

时间:2015-05-29 09:49:44

标签: qt qaction qtoolbutton

我有QToolButton里面有几个QAction个。
问题是我为这个工具栏按钮设置了一个图标,我不想让它改变,当我选择一些QAction时(它将设置项更改为选中{ {1}})来自弹出菜单。
有什么方法可以得到我需要的东西吗?

标题文件

QAction



cpp文件

#include <QToolButton>

class FieldButton : public QToolButton
{
    Q_OBJECT
public:
    explicit FieldButton(QWidget *parent = 0);
};


这是我使用它的方式:

 #include "fieldbutton.h"

FieldButton::FieldButton(QWidget *parent) :
    QToolButton(parent)
{
    setPopupMode(QToolButton::MenuButtonPopup);
    QObject::connect(this, SIGNAL(triggered(QAction*)),
                     this, SLOT(setDefaultAction(QAction*)));
}

2 个答案:

答案 0 :(得分:2)

所以,我在QToolButton源代码NuGet中挖了一点,看起来这个行为是硬编码的,因为QToolButton类监听动作{{1} }相应地发信号并更新按钮默认操作(here

您可以连接到相同的信号并随意重置QToolButton图标。

BTW这看起来是一个相当明智的行为,因为你的行为是可以检查并包装在QToolButton中。

答案 1 :(得分:1)

是的,可以像alediaferia建议的那样,你可以先保存QToolButton图标并重新重置:

 QObject::connect(this, &QToolButton::triggered, [this](QAction *triggeredAction) {
        QIcon icon = this->icon();
        this->setDefaultAction(triggeredAction);
        this->setIcon(icon);
 });

PS:如果你想使用我的代码,请不要忘记通过添加CONFIG + = c ++ 11

在pro文件中启用lambda表达式的c ++ 11支持