2016-12-15 2 views
0

아이콘과 빈 텍스트 만 사용하여 QToolBar에 작업을 추가하고 트리거 될 때 각 액션 스타일을 변경하고 싶습니다 (특히 경계 색상 변경).) : Qt5/C++ : QToolBar 내부의 QIcon 스타일 변경

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), I는 특정 작업의 스타일을 설정하는 방법을 알고하지 않으며, QAction::associatedWidget()QToolBar 위젯을 반환하지 관련되지 않습니다 아이콘을 소유하고있는 버튼.

QML 또는 ui 개의 파일이없는 C++ 코드 만 사용하고 있습니다.

답변

0

QAction::parentWidgetQAction::associatedWidgets 때문에 모두 대신 실제 액션 위젯의 QToolBar, 나는 (내가 위의 QAction:: 방법에 대한 편리한 기능 어떤 종류의 것이라고 생각) QToolBar::widgetForAction에 초기 크레딧을주지 않았다 포함되어 있습니다. 함수 이름이 말하듯이 그 액션에 대한 실제 위젯을 반환하기 때문에 값이 적당합니다.

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