我有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*)));
}
答案 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支持