我正在使用 PyQt5 为 QGIS 创建一个插件,并实现了一个显示所有图层的停靠小部件。我想知道是否可以像 QGIS 那样将按钮添加到停靠小部件的标题栏.
我查看了文档,我知道有一个 setTitleBarWidget,但它只设置了一个小部件。我尝试的另一件事是创建一个 QToolBar 作为 QDockWidget 的子项,它似乎可以工作但不完全。 和
。我也试过 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)
@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)