我只使用图标和空文本向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
窗口小部件,而不是拥有该图标的关联按钮。
我只使用C ++代码,没有QML
或ui
个文件。
答案 0 :(得分:0)
由于QAction::parentWidget
和QAction::associatedWidgets
都包含QToolBar
而非实际操作窗口小部件,因此我没有向QToolBar::widgetForAction
提供初始信用(我认为它会是上述QAction::
方法的一种方便的功能。但它应该得到它,因为它返回该动作的实际小部件,如函数名称所示:
toolbar->widgetForAction(action1)->setStyleSheet
("QWidget { border: 1px solid blue; }");