2012-01-30 3 views
7

내 애플리케이션에서 전체 애플리케이션의 스타일 시트는 애플리케이션에로드 된 리소스 파일에서 가져옵니다.위젯의 ObjectName을 업데이트해도 스타일이 자동으로 업데이트되지 않습니다.

나는 두 QListWidget 거기에 정의 된 스타일이 : 폼에서

QListWidget#Good{ 
..some color properties 
} 

QListWidget#Bad { 
..soem different color properties 
} 

을 내 QListWidget의 개체 이름은 "좋은", 그래서 그것은 #good 스타일을 준수합니다. 런타임 중에 "SetObjectName"을 "Bad"로 설정하고 UI에서 스타일이 즉시 변경되도록하려는 경우가 있습니다. "단지"(나쁜); "SetObjectName"를 호출

  1. :

    나는 두 가지를 발견했습니다 메서드에서 스타일을 변경하지 마십시오.

  2. "SetObjectName ("Bad ");" QListWidget을 포함하는 위젯의 생성자에서 호출 된 경우 작동합니다.

분명히 일부 "업데이트 스타일"단계가 누락되었습니다. 코드에서 "setStyleSheet"를 가질 수는 없으며 QSS 파일에서 가져와야합니다.

무엇이 누락 되었습니까?

답변

9

해결되었습니다. 호출 : 내 위젯에

style()->unpolish(theWidget); 
style()->polish(theWidget); 

를 개체 이름의 변경 후 (setObjectName)는 트릭을했다.

관련 문제