2014-09-20 8 views
4

눌러 진 상태를 구현하는 방법 : https://qt-project.org/wiki/Qt_Style_Sheets_and_Custom_Painting_ExampleQSS 속성 : 호버 내가 정의 QWidgets을위한 QSS에서 액세스 할 수있는 사용자 지정 속성을 구현하는 방법에 대한 웹에서이 예제를 발견

사람이 내가 위젯을 구현할 수있는 방법을 알고 있나요 내가 마우스를 올리거나 눌렀을 때 다른 색상을 사용할 수 있도록하려면 어떻게해야합니까?

현재 스타일 시트는 다음과 같습니다

SWidget 
{ 
qproperty-lineColor: yellow; 
qproperty-rectColor: red; 
} 

나는 이런 식으로 뭔가를 할 수 있도록하려면 :

SWidget:hover 
{ 
qproperty-lineColor: blue; 
qproperty-rectColor: green; 
} 

SWidget:pressed 
{ 
qproperty-lineColor: orange; 
qproperty-rectColor: violet; 
} 

참고 : 내가 마우스 이벤트 및 변경을 구현 할 수 있습니다 알고 색상은 마우스 이벤트와 관련된 qproperties를 사용합니다. 예 :

SWidget 
{ 
qproperty-lineColor: yellow; 
qproperty-rectColor: red; 
qproperty-lineColor-hover: orange; 
qproperty-rectColor-hover: violet; 
} 

하지만 원래 qss/css 방식으로 작동하도록하고 싶습니다.

감사합니다.

+0

안녕하세요, qproperty 시스템을 사용 하시겠습니까? 디자인에서 마우스를 가져 가거나 눌렀을 때의 변화는 순수한 CSS로 수행 할 수 있습니다. – Martin

+0

yes, : hover and : pressed는 SWidget 위젯에서 표준 속성 (색상, 배경색, 테두리, 이미지 등)에 대해서만 정상적으로 트리거됩니다. 그러나 사용자 지정 속성이 필요합니다. 예를 들어 마우스를 올리면 다른 색상으로 변경해야하는 몇 줄의 그림이 있으며 QSS를 사용하여 작업을 완료하고 싶습니다. 이렇게하면 위젯을 더 쉽게 사용자 정의 할 수 있습니다. –

답변

0

사용자가 마우스를 올리거나 눌렀을 때 위젯 속성을 일부 변경해야합니다. 그리고 그 속성에 대해 다른 QSS 선택자를 만드십시오. 속성을 변경 한 후에는 응용 스타일을 고치지 않고 \ 연마해야합니다.

qApp->style()->unpolish(this); 
qApp->style()->polish(this); 

"this"현재 창 포인터. 이 "마법"코드는 적절한 QSS 선택기에 영향을 미칩니다.