QT5/C :更改Qtoolbar内部的QICON的样式

Qt5/C++: change style of a QIcon inside a QToolBar

本文关键字:内部 QICON 样式 Qtoolbar 更改 QT5      更新时间:2023-10-16

我仅使用图标和空文本将操作添加到QToolBar,我想在触发每个动作样式时更改它(特别是,更改其边框颜色):

toolbar = new QToolBar;
action1 = toolbar->addAction(my_icon1, "");
action2 = toolbar->addAction(my_icon2, "");
QObject::connect(action1, &QAction::triggered, [this]{
    // change border color of action1
    // unset border color of action2
});
QObject::connect(action2, &QAction::triggered, [this]{
    // change border color of action2
    // unset border color of action1
});

但是,由于QIcon不是小部件(当然不是QAction),所以我不知道在哪里设置特定操作的样式,并且QAction::associatedWidget()返回QToolBar小部件,而不是拥有图标的关联按钮。

我只使用QMLui文件的C 代码。

因为QAction::parentWidgetQAction::associatedWidgets都包含QToolBar而不是实际的动作小部件,所以我没有对QToolBar::widgetForAction给予最初的信用(我认为这对于QAction::方法来说是某种方便的功能多于)。但是它值得它,因为它返回了该动作的实际小部件,如函数名称所述:

toolbar->widgetForAction(action1)->setStyleSheet
    ("QWidget { border: 1px solid blue; }");