2016-12-15 11 views
0

Я добавляю действия к QToolBar только с помощью значков и пустого текста, и я хочу изменить каждый стиль действия при его запуске (в частности, изменить его цвет границы):Qt5/C++: изменить стиль QIcon внутри 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

С QAction::parentWidget и QAction::associatedWidgets как содержит QToolBar вместо фактического виджета действий, я не дал первоначальный кредита QToolBar::widgetForAction (я думал, что это будет каким-то удобная функция для QAction:: методов выше). Но он этого заслуживает, поскольку он возвращает фактический виджет для этого действия, поскольку имя функции говорит:

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

 Смежные вопросы

  • Нет связанных вопросов^_^