2024-04-20 01:01:21 发布
网友
我已经将QDockWidget子类化,并通过myDockWidget.setWindowTitle("Some text")设置标题栏文本。但是,我想在小部件停靠时在选项卡中显示不同的文本。换句话说,当小部件停靠时,我希望在标题栏中显示一个字符串,在选项卡中显示另一个字符串:
QDockWidget
myDockWidget.setWindowTitle("Some text")
这是可能的吗?如果有,怎么做?在
这可以通过重新实现paintEvent并重写默认标题栏文本来实现。窗口标题仍必须用于设置选项卡文本:
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')
附言:
请注意,另一个选项是使用setTitleBarWidget。然而,这样做的最大缺点是,你失去了所有本地的窗户装饰。在
这可以通过重新实现
paintEvent
并重写默认标题栏文本来实现。窗口标题仍必须用于设置选项卡文本:附言:
请注意,另一个选项是使用setTitleBarWidget。然而,这样做的最大缺点是,你失去了所有本地的窗户装饰。在
相关问题 更多 >
编程相关推荐