Шаг 150.
Библиотека PyQt5.
Списки и таблицы. Представления. Иерархический список
На этом шаге мы рассмотрим назначение, формат конструктора, пример и основные методы класса QTreeView.
Класс QTreeView реализует иерархический список (рисунок 1). Иерархия наследования:
(QObject, QPaintDevice) - QWidget - QFrame - QAbstractScrollArea -
QAbstractItemView - QTreeView

Рис.1. Компонент QTreeView
Текст приложения:
# -*- coding: utf-8 -*-
from PyQt5 import QtWidgets, QtGui
import sys
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.setWindowTitle("QTreeView")
tv = QtWidgets.QTreeView()
sti = QtGui.QStandardItemModel(parent = window)
rootitem1 = QtGui.QStandardItem('QAbstractItemView')
rootitem2 = QtGui.QStandardItem('Базовый класс')
item1 = QtGui.QStandardItem('QListView')
item2 = QtGui.QStandardItem('Список')
rootitem1.appendRow([item1, item2])
item1 = QtGui.QStandardItem('QTableView')
item2 = QtGui.QStandardItem('Таблица')
rootitem1.appendRow([item1, item2])
item1 = QtGui.QStandardItem('QTreeView')
item2 = QtGui.QStandardItem('Иерархический список')
rootitem1.appendRow([item1, item2])
sti.appendRow([rootitem1, rootitem2])
rootitem1 = QtGui.QStandardItem('QAbstractItemModel')
rootitem2 = QtGui.QStandardItem('Базовый класс')
item1 = QtGui.QStandardItem('QStandardItemModel')
item2 = QtGui.QStandardItem('Основная модель')
rootitem1.appendRow([item1, item2])
sti.appendRow([rootitem1, rootitem2])
sti.setHorizontalHeaderLabels(['Класс', 'Описание'])
tv.setModel(sti)
tv.setColumnWidth(0, 170)
vbox = QtWidgets.QVBoxLayout()
vbox.addWidget(tv)
window.setLayout(vbox)
window.resize(350,200)
window.show()
sys.exit(app.exec_())
Архив с файлом можно взять
здесь.
Формат конструктора класса QTreeView:
<Объект> = QTreeView([parent=<Родитель>]
Класс QTreeView наследует все методы и сигналы класса QAbstractItemView (см. 146 шаг) и дополнительно поддерживает следующие методы
(здесь приведены только основные - за полным их списком обращайтесь к странице
https://doc.qt.io/qt-5/qtreeview.html):
- header () - возвращает ссылку на горизонтальный заголовок (экземпляр класса QHeaderView);
- setColumnWidth (<Индекс>, <Ширина>) - задает ширину столбца с указанным в первом параметре индексом;
- columnWidth (<Индекс>) - возвращает ширину столбца;
- rowHeight (<QModelIndex>) - возвращает высоту строки, в которой находится элемент с указанным индексом (экземпляр класса QModelIndex);
- resizeColumnToContents (<Индекс столбца>) - изменяет ширину указанного столбца таким образом, чтобы в нем поместилось все содержимое. Метод является слотом;
- setUniformRowHeights (<Флаг>) - если в качестве параметра указано значение True, все элементы будут иметь одинаковую высоту;
- setHeaderHidden (<Флаг>) - если в качестве параметра указано значение True, заголовок будет скрыт. Значение False отображает заголовок;
- isHeaderHidden () - возвращает значение True, если заголовок скрыт, и False - в противном случае;
- setColumnHidden (<Индекс>, <Флаг>) - если во втором параметре указано значение True, то столбец с индексом, указанным в первом параметре, будет скрыт. Значение False отображает столбец;
- hideColumn (<Индекс>) - скрывает столбец с указанным индексом. Метод является слотом;
- isColumnHidden (<Индекс>) - возвращает значение True, если столбец с указанным индексом скрыт, и False - в противном случае;
- setRowHidden (<Индекс>, <QModelIndex>, <Флаг>) - если в третьем параметре указано значение True, то строка с индексом <Индекс> и родителем QModelIndex будет скрыта. Значение False отображает строку;
- showColumn (<Индекс>) - отображает столбец с указанным индексом. Метод является слотом;
- isRowHidden (<Индекс>, <QModelIndex>) - возвращает значение True, если строка с указанным индексом <Индекс> и родителем QModelIndex скрыта, и False - в противном случае;
- isIndexHidden (<QModelIndex>) - возвращает значение True, если элемент с указанным индексом (экземпляр класса QModelIndex) скрыт, и False - в противном случае;
- setExpanded (<QModelIndex>, <Флаг>) - если во втором параметре указано значение True, то элементы, которые являются дочерними для элемента с указанным в первом параметре индексом, будут отображены, а если False - то скрыты. В первом параметре указывается экземпляр класса QModelIndex;
- expand (<QModelIndex>) - отображает элементы, которые являются дочерними для элемента с указанным индексом. В качестве параметра указывается экземпляр класса QModelIndex. Метод является слотом;
- expandToDepth (<Уровень>) - отображает все дочерние элементы до указанного уровня. Метод является слотом;
- expandAll () - отображает все дочерние элементы. Метод является слотом;
На следующем шаге мы закончим изучение этого вопроса.
Предыдущий шаг
Содержание
Следующий шаг