2017-09-05 6 views
0

QtCheckBox를 삼제로 설정하려면 상태가 부분 일 때 확인란에 X를 그립니다. 나는 현재 운영 체제와 일치하도록 Qt가 스타일을 처리하도록하고 있으며, 그 방법으로 유지하고 체크 박스가 그려지는 방식 만 바꾸고 싶습니다.PyQt4의 시스템 스타일 수정

저는 Qt에서 사용하는 QStyle을 재정 의하여이 작업을 수행하려고했습니다. 나는 Qt는 기본적으로 사용되었다는 스타일 테스트 :

>>> app = QtGui.QApplication() 
>>> type(app.style()) 
PyQt4.QtGui.QCommonStyle 

을하지만 app.setStyle(QtGui.QCommonStyle())를 실행하려고하면 GUI의 변화는 특히 체크 표시는 QCheckBox ES에서 사라집니다.

나는 QCommonStyle을 찾았으며 문서를 기반으로 모든 스타일에 공통된 요소 만 그립니다. 사용되는 스타일이 실제로 QCommonStyle하지 않은 것 같습니다 때,

  1. type(app.style())QCommonStyle 반환 :

    그래서 나는이 개 질문이?

  2. 실제로 Qt에서 사용하는 스타일을 얻으려면 어떻게해야합니까?

저는 PyQt4를 사용하고 있습니다.

답변

2

이유는 유형 (app.style()) QCommonStyle를 반환이 나타나면 사용되는 스타일은 실제로 QCommonStyle하지 않다 것을? 내 경우에는, 예를 들어, 일반적으로 QCommonStyle의 스타일을 상속처럼 사용

클래스 I는 다음 스타일이 있습니다

for key in QtGui.QStyleFactory.keys(): 
    st = QtGui.QStyleFactory.create(key) 
    print(key, st.metaObject().className(), type(app.style())) 

출력 :

Adwaita-Dark Adwaita::Style <class 'PyQt4.QtGui.QCommonStyle'> 
Adwaita  Adwaita::Style <class 'PyQt4.QtGui.QCommonStyle'> 
Breeze  Breeze::Style <class 'PyQt4.QtGui.QCommonStyle'> 
bb10dark  QBB10DarkStyle <class 'PyQt4.QtGui.QCommonStyle'> 
bb10bright QBB10BrightStyle <class 'PyQt4.QtGui.QCommonStyle'> 
cleanlooks QCleanlooksStyle <class 'PyQt4.QtGui.QCommonStyle'> 
gtk2   QGtkStyle  <class 'PyQt4.QtGui.QCommonStyle'> 
cde   QCDEStyle  <class 'PyQt4.QtGui.QCommonStyle'> 
motif  QMotifStyle  <class 'PyQt4.QtGui.QCommonStyle'> 
plastique QPlastiqueStyle <class 'PyQt4.QtGui.QCommonStyle'> 
qt5ct-style Qt5CTProxyStyle <class 'PyQt4.QtGui.QCommonStyle'> 
QtCurve  QtCurve::Style <class 'PyQt4.QtGui.QCommonStyle'> 
Windows  QWindowsStyle <class 'PyQt4.QtGui.QCommonStyle'> 
Fusion  QFusionStyle  <class 'PyQt4.QtGui.QCommonStyle'> 

우리가 관찰 모든 그 종류입니다.

실제로 Qt에서 사용하는 스타일을 얻으려면 어떻게해야합니까?

그것은 이미 이전 부분에 대한 답변

:

내 경우
print(QtGui.QApplication.style().metaObject().className()) 

:

Adwaita::Style