Qt5 / C ++:在QToolBar中更改QIcon的样式

时间:2016-12-15 23:39:42

标签: c++ qt toolbar qtstylesheets

我只使用图标和空文本向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 ++代码,没有QMLui个文件。

1 个答案:

答案 0 :(得分:0)

由于QAction::parentWidgetQAction::associatedWidgets都包含QToolBar而非实际操作窗口小部件,因此我没有向QToolBar::widgetForAction提供初始信用(我认为它会是上述QAction::方法的一种方便的功能。但它应该得到它,因为它返回该动作的实际小部件,如函数名称所示:

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