2014-02-23 2 views
0

동일한 유형의 위젯 인스턴스에 대해 다른 스타일을 지정해야합니다. 특히 QActions 용. 다음 스타일 시트는 QActions의 '배경 이미지, 실제 도구 버튼'을 설정합니다.Qt 스타일 시트 - 동일한 유형 위젯에 대한 다른 스타일

QToolButton 
{ 
    background-image: url(bg.png); 
} 

하지만이 도구 버튼에는 다른 배경을 지정해야합니다.

QToolButton::actClose 
{ 
    background-image: url(close.png); 
} 
QToolButton::actOpen 
{ 
    background-image: url(open.png); 
} 

쉬운 방법이 있습니까 아니면 불가능합니까?

답변

0

당신은

QToolButton *button = new QToolButton; 
button->setObjectName("firstButton"); 

button = new QToolButton; 
button->setObjectName("secondButton"); 

QToolButton

의 인스턴스에 대한 개체 이름을 설정하고 다음에 당신이 QToolButton와 QActions와 동료를 만들고 C++ 코드를 게시 할 수있는 경우

QToolButton#firstButton 
{ 
    background-color: gray 
} 

QToolButton#secondButton 
{ 
    background-color: red 
} 
+0

공구 버튼이 아니기 때문에 작동하지 않습니다. QAction입니다. –

+0

'QAction'은 일종의'QWidget'이 아니므로 배경이나 이미지를 설정할 수 없습니다 ('QObject '). 'QToolButton'은 어떤 액션과 관련된'QWidget'의 일종으로 배경, 아이콘 등을 가질 수 있습니다. – Blueman

0

그것은 도움이 스타일 시트에서 사용할 수 .

가와 "addAction() 또는 insertAction을(). 사용하여 작업을 추가하여 추가 도구 모음 버튼"QToolBar의 기준에서 인용 "는 QWidget * QToolBar widgetForAction 지정된 작업과 관련된 위젯을 돌려 (QAction * 행동) const를."

QToolBar를 생성하고이를 채우기 위해 QToolBar :: addAction (QAction *)을 호출하면 툴 버튼에 대한 포인터를 얻을 수 있습니다. QToolBar :: widgetForAction()을 호출하고 setObjectName ("")을 호출하면 Blueman의 메서드를 적용 할 수 있습니다.

스타일 시트를 위젯에 적용하는 동안 클래스 이름 뒤에 객체 이름을 지정하려면 "#"을 사용하고 "enabled", "::"와 같이 객체 상태를 나타내는 objectName의 className 뒤에 ":"를 사용합니다. "ListView :: Item"과 같은 하위 컨트롤을 지정하십시오. 불행히도 QAction은 QToolBar가 아닙니다.