2010-08-19 1 views
1

하위 클래스 QGraphicsView를 MDIArea에서 사용하고 있습니다. 개체의 'within'아이콘에서 창의 아이콘을 변경할 수 있기를 원하지만 ... 오류 또는 경고 ... 그것은 단지 그것을하지 않습니다. 위의 사용 PyQt QGraphicsView가 setWindowIcon에 실패했습니다.

if self.world.is_dirty: 
    self.setWindowIcon(QtGui.QIcon ('images/dirty.png')) 
    self.setWindowTitle('dirty') 
else: 
    self.setWindowIcon(QtGui.QIcon ('images/clean.png')) 
    self.setWindowTitle('clean') 

의 WINDOWTITLE 완벽하게 변경 예상대로,하지만 아이콘이 고집 MainWindow를 아이콘으로 고정 된 상태를 유지합니다. 나는 그것이 QIcon으로 엉망이 될 것이라고 생각했지만, isNull()을 검사했는데 그것은 false입니다. 그래서 Null이 아닙니다. 내가 테스트 할

, 나는 MainWindow를 객체에서 변경 아이콘을 시도하고 내가보기에서 그것을 시도 할 때

self.mdiArea.activeSubWindow().setWindowIcon(QtGui.QIcon ('images/dirty.png')) 

그래서 왜 나를 무시 ... 잘 작동?

답변

0

C++ docs for the windowIcon property에서 보면 그들은 위젯이 실제로 창인 경우에만 속성이 의미가 있다고합니다. 나는 당신의 QGraphicsView이 실제로 당신의 창이라고 생각하지 않습니까?

반대로 docs for the windowTitle property은 최상위 위젯에 대해 일반적으로 그 속성이 더 적합하다고 말합니다. 이것이 아마 다른 행동의 이유 일 것입니다.

+0

QGraphicsView는 부모 QMdiSubWindow를 가지고 있기 때문에 이해할 수있는 "최상위"위젯이 아닙니다 ... 조금 일관성이없는 것 같습니다. setWindowTitle()은 QGV와 해당 parent() 모두에서 작동합니다. setWindowIcon()은 parent()에서만 작동합니다. 적어도 지금은 작동합니다 ... thanks :) –

+0

@ Dan B : 네, 아직 조금 이상합니다. 그때. 아이콘보다 title 속성이 더 버그라고 제안합니다! – Troubadour