首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用QDockWidget指定分隔符?

如何使用QDockWidget指定分隔符?
EN

Stack Overflow用户
提问于 2018-01-18 17:35:56
回答 1查看 729关注 0票数 1

我有以下示例代码:

代码语言:javascript
复制
from PyQt5 import QtWidgets, QtCore, QtGui
import sys

class MainWindow(QtWidgets.QMainWindow):

    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent=parent)
        self.bgcolor = self.palette().color(self.backgroundRole()).name()

        self.central = QtWidgets.QTextEdit(self)
        self.central.setText('this is the central widget')
        self.setCentralWidget(self.central)
        self.setDockOptions(self.AnimatedDocks) #prevent tabbing

        self.rightDock = QtWidgets.QDockWidget('right dock', self)
        self.rightDock.setAllowedAreas(QtCore.Qt.RightDockWidgetArea)
        self.rightDock.setStyleSheet('QDockWidget::title{text-align:left;background:'+self.bgcolor+';}')

        self.everywhereDock = QtWidgets.QDockWidget('everywhere dock',self)
        self.everywhereDock.setAllowedAreas(QtCore.Qt.BottomDockWidgetArea | QtCore.Qt.TopDockWidgetArea | QtCore.Qt.LeftDockWidgetArea | QtCore.Qt.RightDockWidgetArea)
        self.everywhereDock.setFeatures(QtWidgets.QDockWidget.DockWidgetFloatable | QtWidgets.QDockWidget.DockWidgetMovable)
        self.everywhereDock.setStyleSheet('QDockWidget::title{text-align:left;background:'+self.bgcolor+';}')

        self.dockable = QtWidgets.QTextEdit(self.rightDock)
        self.dockable.setText('this is dockable only on the right')
        self.dockable2 = QtWidgets.QTextEdit(self.everywhereDock)
        self.dockable2.setText('this is dockable everywhere, also its not closable')

        self.rightDock.setWidget(self.dockable)
        self.everywhereDock.setWidget(self.dockable2)

        self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.rightDock)
        self.addDockWidget(QtCore.Qt.BottomDockWidgetArea, self.everywhereDock)
        self.setTabPosition(QtCore.Qt.AllDockWidgetAreas, QtWidgets.QTabWidget.North)

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    m = MainWindow()
    m.show()
    sys.exit(app.exec_())

问题是如何插入图标,在DockWidgetAreas之间的边框是可拖动的,以便用户有一个提示,即有这个功能。

澄清一下:我想在黑色箭头之间有一个图标:

EN

回答 1

Stack Overflow用户

发布于 2018-01-18 23:53:20

QDockWidget支持“标题小部件”,它不是分隔符,但您可以使用QDockWidget::setTitleBarWidget(QWidget *widget)将其添加到每个QDockWidget中。

因此,您可以使用QHorizontalLayout或其他工具创建一个通用QWidget来保存此图标,并将其放入标题栏中。由Qt处理的默认鼠标事件(如拖动事件)应该会继续正常工作,并且您有一个可定制的标题栏。

代码语言:javascript
复制
self.rightDock = QtWidgets.QDockWidget('right dock', self)
self.rightDock.setAllowedAreas(QtCore.Qt.RightDockWidgetArea)

// add custom title widget
self.rightDock.setTitleBarWidget(self.titleWidget)
// add widget to dock widget
self.rightDock.setWidget(self.dockable)

self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.rightDock)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48317973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档