У меня есть QToolButton
с паролем QAction
s внутри него.
Проблема в том, что я установил значок этой кнопки на панели инструментов, и я не хочу, чтобы он менялся, когда я выбираю QAction
(он меняет заданный элемент на текст из выбранного QAction
) из всплывающего меню.
Есть ли какой-либо qt-way, чтобы получить то, что мне нужно?
заголовочный файлFix QToolButton icon
#include <QToolButton>
class FieldButton : public QToolButton
{
Q_OBJECT
public:
explicit FieldButton(QWidget *parent = 0);
};
CPP файл
#include "fieldbutton.h"
FieldButton::FieldButton(QWidget *parent) :
QToolButton(parent)
{
setPopupMode(QToolButton::MenuButtonPopup);
QObject::connect(this, SIGNAL(triggered(QAction*)),
this, SLOT(setDefaultAction(QAction*)));
}
Это, как я использую его:
FieldButton *fieldButton = new FieldButton();
QMenu *allFields = new QMenu();
// ... filling QMenu with all needed fields of QAction type like:
QAction *field = new QAction(tr("%1").arg(*h),0);
field->setCheckable(true);
allFields->addAction(field);
// ...
fieldButton->setMenu(allFields);
fieldButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
fieldButton->setIcon(QIcon(":/field.png"));
fieldButton->setText("My text");
fieldButton->setCheckable(true);
toolbar->addWidget(fieldButton);
Можете ли вы поделиться кодом, который вы используете для настройки QToolButton и QAction внутри? – alediaferia
Возможно, вы можете переопределить значок кнопки с помощью специальной таблицы стилей? Возьмите это для вдохновения: http://stackoverflow.com/questions/20573944/change-icon-on-state-change-using-qt-stylesheet – ypnos
@alediaferia Я предоставил код – tema