2017-11-27 1 views
1

서브 클래스가 QDockWidget이고 myDockWidget.setWindowTitle("Some text")을 통해 제목 표시 줄 텍스트를 설정하고 있습니다. 그러나 위젯이 도킹 될 때 탭에 다른 텍스트를 표시하고 싶습니다.QDockWidget의 탭과 창 제목에 다른 텍스트를 설정하는 방법은 무엇입니까?

enter image description here

이 만약 그렇다면, 어떻게이 가능하며 : 위젯이 도킹되어있을 경우 즉, 나는 하나의 제목 표시 줄에있는 문자열과 탭에서 다른 문자열을 표시하고 싶습니다 끝났어?

+0

이미지로 원하는 것을 나타낼 수 있습니다. – eyllanesc

+0

설명 할 이미지가 추가되었습니다. – LKeene

답변

1

paintEvent을 다시 구현하고 기본 제목 표시 줄 텍스트를 재정 의하여 구현할 수 있습니다. 윈도우 타이틀은 여전히 ​​탭 텍스트를 설정하는 데 사용되어야합니다

class DockWidget(QtGui.QDockWidget): 
    _title_text = None 

    def titleText(self): 
     if self._title_text is None: 
      return self.windowTitle() 
     return self._title_text 

    def setTitleText(self, text): 
     self._title_text = text 
     self.repaint() 

    def paintEvent(self, event): 
     painter = QtGui.QStylePainter(self) 
     if self.isFloating(): 
      options = QtGui.QStyleOptionFrame() 
      options.initFrom(self) 
      painter.drawPrimitive(QtGui.QStyle.PE_FrameDockWidget, options) 
     options = QtGui.QStyleOptionDockWidgetV2() 
     self.initStyleOption(options) 
     options.title = self.titleText() 
     painter.drawControl(QtGui.QStyle.CE_DockWidgetTitle, options) 

dockWidget = DockWidget() 
dockWidget.setWindowTitle('Tab Text') 
dockWidget.setTitleText('Title Text') 

PS : 또 다른 옵션은 setTitleBarWidget을 사용하는 것입니다

참고. 그러나, 이것의 큰 단점은 모든 네이티브 윈도우 장식을 잃게된다는 것입니다.

관련 문제