Шаг 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):
- setModelColumn (<Индекс>) - задает индекс отображаемого столбца в табличной модели (по умолчанию отображается первый столбец с индексом 0);
- setViewMode (<Режим>) - задает режим отображения элементов. В качестве параметра указываются следующие атрибуты класса QListView:
- ListMode (или 0) - элементы размещаются сверху вниз, а значки имеют маленькие размеры;
- IconMode (или 1) - элементы размещаются слева направо, а значки имеют большие размеры. Элементы можно свободно перемещать мышью;
- setMovement (<Режим>) - задает режим перемещения элементов. В качестве параметра указываются следующие атрибуты класса QListView:
- Static (или 0) - пользователь не может перемещать элементы;
- Free (или 1) - свободное перемещение;
- Snap (или 2) - перемещаемые элементы автоматически выравниваются по сетке, размеры которой задаются методом setGridSize();
- setGridSize (<QSize>) - задает размеры сетки, по которой выравниваются перемещаемые элементы;
- setResizeMode (<Режим>) - задает режим расположения элементов при изменении размера списка. В качестве параметра указываются следующие атрибуты класса QListView:
- Fixed (или 0) - элементы остаются в том же положении;
- Adjust (или 1) - положение элементов изменяется при изменении размеров;
- setFlow (<Режим>) - задает порядок вывода элементов. В качестве параметра указываются следующие атрибуты класса QListView:
- LeftToRight (или 0) - слева направо;
- TopToBottom (или 1) - сверху вниз;
- setWrapping (<Флаг>) - если в качестве параметра указано значение False, перенос элементов на новую строку (если они не помещаются в ширину области) запрещен;
- setWordwrap (<Флаг>) - если в качестве параметра указано значение True, текст элементов при необходимости будет переноситься по строкам;
- setLayoutMode (<Режим>) - задает режим размещения элементов. В качестве параметра указываются следующие атрибуты класса QListView:
- SinglePass (или 0) - элементы размещаются все сразу. Если список слишком большой, то окно останется заблокированным, пока все элементы не будут отображены;
- Batched (или 1) - элементы размещаются блоками. Размер такого блока задается методом setBatchSize(<Количество>);
- setUniformItemSizes (<Флаг>) - если в качестве параметра указано значение True, все элементы будут иметь одинаковый размер (по умолчанию они имеют разные размеры, зависящие от содержимого);
- setSpacing (<Отступ>) - задает отступ вокруг элемента;
- setSelectionRectvisible (<Флаг>) - если в качестве параметра указано значение True, будет отображаться вспомогательная рамка, показывающая область выделения. Метод доступен только при использовании режима множественного выделения;
- setRowHidden (<Индекс>, <Флаг>) - если во втором параметре указано значение True, строка с индексом, указанным в первом параметре, будет скрыта. Значение False отображает строку;
- isRowHidden (<Индекс>) - возвращает значение True, если строка с указанным индексом скрыта, и False - в противном случае.
Класс QListView также поддерживает сигнал indexesMoved(<Элементы>), генерируемый при перемещении элементов. Внутри обработчика через параметр доступен
список перемещаемых элементов в виде экземпляров класса QModelIndex.
На следующем шаге мы рассмотрим реализацию таблицы.
Предыдущий шаг
Содержание
Следующий шаг