PyQt5 QDockWidget 标题栏小部件

问题描述 投票:0回答:1

我正在使用 PyQt5 为 QGIS 创建一个插件,并实现了一个显示所有图层的停靠小部件。我想知道是否可以像 QGIS 那样将按钮添加到停靠小部件的标题栏QGIS Dock Widget Title Bar Widgets.

我查看了文档,我知道有一个 setTitleBarWidget,但它只设置了一个小部件。我尝试的另一件事是创建一个 QToolBar 作为 QDockWidget 的子项,它似乎可以工作但不完全。 FloatingDocked。我也试过 setContentsMargins(0, 30, 0, 0) 但这也没有用。使用其他值只会增加/减少另一边,但不会增加标题边距。非常感谢任何帮助或指导。谢谢。

def layerTree(self):
        self.layers_widget = QDockWidget('Layers', self)


        self.view = QgsLayerTreeView(self.layers_widget)
        self.root = QgsProject.instance().layerTreeRoot()
        self.model = QgsLayerTreeModel(self.root)
        self.model.setFlag(QgsLayerTreeModel.AllowNodeReorder)
        self.model.setFlag(QgsLayerTreeModel.AllowNodeChangeVisibility)
        self.view.setModel(self.model)
        self.layers_widget.setWidget(self.view)
        self.addDockWidget(Qt.LeftDockWidgetArea, self.layers_widget)


        self.lt_toolbar = QToolBar(self.layers_widget)
        self.delete_layer = QAction('Delete Layer')
        self.lt_toolbar.addAction(self.delete_layer)
pyqt5 qwidget titlebar qdockwidget
1个回答
0
投票

@musicamante,谢谢!这正是我所做的,并来到这里分享它。我仍然非常感谢您的评论。这对我有用:

def layerTree(self):
    self.layers_widget = QDockWidget('Layers', self)
    self.view = QgsLayerTreeView(self.layers_widget)
    self.root = QgsProject.instance().layerTreeRoot()
    self.model = QgsLayerTreeModel(self.root)
    self.model.setFlag(QgsLayerTreeModel.AllowNodeReorder)
    self.model.setFlag(QgsLayerTreeModel.AllowNodeChangeVisibility)
    self.view.setModel(self.model)
    
    self.addDockWidget(Qt.LeftDockWidgetArea, self.layers_widget)

    self.dock_layout_widget = QWidget()
    self.dock_layout = QBoxLayout(QBoxLayout.TopToBottom, self.dock_layout_widget)
    self.dock_layout.setContentsMargins(0,0,0,0)

    self.dock_toolbar = QToolBar()
    newLetter = QAction("New", self)
    self.dock_toolbar.addAction(newLetter)
    self.dock_layout.addWidget(self.dock_toolbar)
    self.dock_layout.addWidget(self.view)

    self.layers_widget.setWidget(self.dock_layout_widget)
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.