На этом шаге мы рассмотрим назначение, пример и основные методы этого класса.
Каждый элемент модели QStandardItemModel представлен классом QStandardItem из модуля QtGui. Этот класс не только описывает элемент, но и позволяет создавать вложенные структуры, в которых любой элемент может иметь произвольное количество вложенных в него дочерних элементов или элементов-потомков (что пригодится при выводе иерархического списка). Форматы конструктора класса:
<Объект> = QStandardItem() <Объект> = QStandardItem(<Текст>) <Объект> = QStandardItem(<QIcon>, <Текст>) <Объект> = QStandardItem(<Количество строк>[, <Количество столбцов>=1])
Последний формат задает количество дочерних элементов и столбцов в них.
Наиболее часто используемые методы класса QStandardItem приведены далее (за полным их списком обращайтесь к странице https://doc.qt.io/qt-5/qstandarditem.html):
# -*- coding: utf-8 -*- from PyQt5 import QtWidgets, QtGui import sys app = QtWidgets.QApplication(sys.argv) window = QtWidgets.QWidget() window.setWindowTitle("QStandardItem") tv = QtWidgets.QTreeView() sti = QtGui.QStandardItemModel(parent = window) rootitem1 = QtGui.QStandardItem('QAbstractltemView') rootitem2 = QtGui.QStandardItem('Базовый класс') item1 = QtGui.QStandardItem('CQListView') 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]) sti.setHorizontalHeaderLabels(['Класс', 'Описание']) tv.setModel(sti) tv.setColumnWidth(0, 170) vbox = QtWidgets.QVBoxLayout() vbox.addWidget(tv) window.setLayout(vbox) window.resize(400,200) window.show() sys.exit(app.exec_())
Рис.1. Результат работы приложения
На следующем шаге мы закончим изучение этого вопроса.