rscder-pub/rscder/gui/layertree.py
2022-05-05 15:59:04 +08:00

71 lines
2.3 KiB
Python

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt,QModelIndex
from PyQt5.QtGui import QStandardItemModel, QStandardItem
from PyQt5.QtWidgets import (QTreeView, QTreeWidgetItem, QAbstractItemView, QHeaderView, QStyleFactory)
from rscder.utils.project import PairLayer, Project
class LayerTree(QtWidgets.QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.tree_view = QTreeView(self)
self.tree = QtWidgets.QTreeWidget(self)
self.tree.setColumnCount(1)
self.setContextMenuPolicy(Qt.CustomContextMenu)
self.customContextMenuRequested.connect(self.right_menu_show)
self.root=QTreeWidgetItem(self.tree)
self.tree.setHeaderHidden(True)
# self.tree.setHeaderLabels(['图层'])
self.root.setText(0,'图层')
# child1=QTreeWidgetItem()
# child1.setText(0,'child1')
# child1.setCheckState(0,Qt.Checked)
# self.root.addChild(child1)
self.tree.expandAll()
self.tree.addTopLevelItem(self.root)
self.tree.clicked.connect(self.onClicked)
layout = QtWidgets.QGridLayout()
layout.addWidget(self.tree)
self.setLayout(layout)
self.setLayoutDirection(Qt.LeftToRight)
def onClicked(self,index):
print(index.row())
def add_layer(self, layer:str):
layer:PairLayer = Project().layers[layer]
item1 = QtWidgets.QTreeWidgetItem(self.root)
item1.setText(0, layer.l1_name)
item1.setCheckState(0, Qt.Checked)
item2 = QtWidgets.QTreeWidgetItem(self.root)
item2.setText(0, layer.l2_name)
item2.setCheckState(0, Qt.Checked)
item1.setData(0, Qt.UserRole, layer.id)
item2.setData(0, Qt.UserRole, layer.id)
self.tree.expandAll()
def clear(self):
self.tree.clear()
self.root = QTreeWidgetItem(self.tree)
self.root.setText(0,'图层')
self.tree.addTopLevelItem(self.root)
def right_menu_show(self, position):
rightMenu = QtWidgets.QMenu(self)
# QAction = QtWidgets.QAction(self.menuBar1)
self.actionreboot = QtWidgets.QAction('zhangji')
self.actionreboot.setObjectName("actionreboot")
self.actionreboot.setText('aaa')
rightMenu.addAction(self.actionreboot)
rightMenu.exec_(self.mapToGlobal(position))