Шаг 148.
Библиотека PyQt5.
Списки и таблицы. Представления. Простой список

    На этом шаге мы рассмотрим назначение, формат конструктора, пример и основные методы класса QListView.

    Класс QListView реализует простой список с возможностью выбора как одного, так и нескольких пунктов. Кроме текста, в любом пункте такого списка может присутствовать значок (рисунок 1). Иерархия наследования выглядит так:

  (QObject, QPaintDevice) - QWidget - QFrame - QAbstractScrollArea -
      QAbstractItemView - QListView


Рис.1. Компонент QListView

    Текст приложения:

# -*- coding: utf-8 -*-
from PyQt5 import QtWidgets, QtGui
import sys
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.setWindowTitle("QListView")

lv = QtWidgets.QListView()
sti = QtGui.QStandardItemModel(parent=window)
lst = ['Perl', 'PHP', 'Python', 'Ruby']
for row in range(0, 4):
    if row == 2:
        iconfile = 'python.png'
    else:
        iconfile = 'icon.png'
    item = QtGui.QStandardItem(QtGui.QIcon(iconfile), lst[row])
    sti.appendRow(item)
lv.setModel(sti)

vbox = QtWidgets.QVBoxLayout()
vbox.addWidget(lv)
window.setLayout(vbox)
window.resize(200,100)
window.show()
sys.exit(app.exec_())
Архив с файлами можно взять здесь.

    Формат конструктора класса QListView:

  <Объект> = QListView([parent=<Родитель>]) 

    Класс QListView наследует все методы и сигналы из класса QAbstractItemView (см. 146 шаг), включая методы setModel(), model() и selectedIndexes(). Помимо этого, он дополнительно определяет следующие методы (здесь приведены только основные - полный их список доступен на странице https://doc.qt.io/qt-5/qlistview.html):

    Класс QListView также поддерживает сигнал indexesMoved(<Элементы>), генерируемый при перемещении элементов. Внутри обработчика через параметр доступен список перемещаемых элементов в виде экземпляров класса QModelIndex.

    На следующем шаге мы рассмотрим реализацию таблицы.




Предыдущий шаг Содержание Следующий шаг