Updated: 2021/05/11 山岸 Created: 2021/05/11 山岸


Reference:

Tips:

Publisc Functions:

setRootIsDecorated(False) ツリーラインなどオフ

TreeWidget.header().hide() ヘッダー非表示

header = treewidget.header()
header.hide()

Singals

void	currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
void	itemActivated(QTreeWidgetItem *item, int column)
void	itemChanged(QTreeWidgetItem *item, int column)
void	itemClicked(QTreeWidgetItem *item, int column)
void	itemCollapsed(QTreeWidgetItem *item)
void	itemDoubleClicked(QTreeWidgetItem *item, int column)
void	itemEntered(QTreeWidgetItem *item, int column)
void	itemExpanded(QTreeWidgetItem *item)
void	itemPressed(QTreeWidgetItem *item, int column)
void	itemSelectionChanged()

Examples:

Example1

ui = QtWidgets.QTreeWidget(self)
headers = ['Asset', 'Status', 'Description']
ui.setColumnCount(len(headers))
ui.setHeaderLabels(headers)
ui.header().resizeSection(0, 100)
ui.header().resizeSection(1, 35)
ui.sortByColumn(0, QtCore.Qt.AscendingOrder) # SortOrder昇順降順
ui.setSortingEnabled(True)
ui.setAlternatingRowColors(True)
# rootノードの折り畳みのアイコン
ui.setRootIsDecorated(False)
# 展開する階層
ui.expandToDepth(0)
# アイテムの移動を有効にする
ui.setDragDropMode(QtGui.QAbstractItemView.InternalMove)
ui.setDragEnabled(True)
ui.viewport().setAcceptDrops(True)

# 複数選択
ui.setSelectionMode(ui.MultiSelection)
ui.setSelectionMode(ui.ExtendedSelection)

# ヘッダー非表示
# ui.header().hide()

# ContexMenu
ui.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
ui.customContextMenuRequested.connect(self.contextMenu)

def contextMenu(self, point):
    menu = QtWidgets.QMenu(self)

    action = QtWidgets.QAction('Menu1', self)
    action.triggered.connect(self.menu1)
    action.setShortcut(QtGui.QKeySequence('Ctrl+Shift+C'))
    menu.addAction(action)

    action = QtWidgets.QAction('Menu2', self)
    menu.addAction(action)

    menu.addSeparator()

    action = QtWidgets.QAction('Menu3', self)
    menu.addAction(action)

    menu.exec_(self.mapToGlobal(point))

複数選択

PySide6 から以下のコードでは動かないので

Example2

for shot in shots:
    top_item = SceneListTreeWidgetItem(self._ctrl, shot, ui)
    ui.addTopLevelItem(top_item)

    scenes = shot.dependencies()
    for scene in scenes:
        item = SceneListTreeWidgetItem(self._ctrl, scene, top_item)
        top_item.addChild(item)

全てのItemを取得

items = self.tree_widget.findItems(
    name, QtCore.Qt.MatchWrap |QtCore.Qt.MatchWildcard | QtCore.Qt.MatchRecursive,
)

全てのItemを取得2