Шаг 140.
Библиотека PyQt5.
Списки и таблицы. Модели. Класс QStringListModel
На этом шаге мы рассмотрим назначение, конструктор и основные методы этого класса.
Класс QStringListModel из модуля QtCore реализует одномерную модель, содержащую список строк. Ее содержимое можно отобразить с помощью классов QListView, QComboBox
и др., передав в метод setModel() представления. Иерархия наследования:
QObject - QAbstractItemModel - QAbstractListModel - QStringListModel
Форматы конструктора класса QStringListModel:
<Объект> = QStringListModel ( [parent=None])
<Объект> = QStringListModel (<Список строк>[, parent=None])
Пример:
lst = ['Perl', 'PHP', 'Python', 'Ruby']
slm = QtCore.QStringListModel (lst, parent = window)
cbo = QtWidgets.QComboBox()
cbo.setModel(slm)
Класс QStringListModel наследует метод index() из класса QAbstractListModel, который возвращает индекс (экземпляр класса QModelIndex) элемента модели. Формат метода:
index(<Строка>[, column=0][, parent=QModelIndex()])
Первый параметр задает номер строки в модели, в которой хранится нужный элемент. Необязательный параметр column указывает номер столбца модели - для класса QStringListModel,
позволяющего хранить простые списки строк, его следует задать равным 0. Необязательный параметр parent позволяет задать элемент верхнего уровня для искомого элемента - если таковой
не задан, будет выполнен поиск элемента на самом верхнем уровне иерархии.
Класс QStringListModel поддерживает также следующие методы (здесь перечислены только основные - полный их список можно найти на странице
https://doc.qt.io/qt-5/qstringlistmodel.html):
- setStringList (<Список строк>) - устанавливает список строк в качестве содержимого модели;
- stringList () - возвращает список строк, хранящихся в модели;
- insertRows (<Индекс>, <Количество>[, parent=QModelIndex()]) - вставляет указанное количество пустых элементов в позицию, заданную первым параметром,
остальные элементы сдвигаются в конец списка. Необязательный параметр parent позволяет указать элемент верхнего уровня, в который будут вложены добавляемые элементы, - если таковой
не задан, элементы будут добавлены на самый верхний уровень иерархии. Метод возвращает значение True, если операция успешно выполнена;
- removeRows (<Индекс>, <Количество>[, parent=QModelIndex()]) - удаляет указанное количество элементов, начиная с позиции, заданной первым параметром.
Необязатель ный параметр parent позволяет указать элемент верхнего уровня, в который вложены удаляемые элементы, - если таковой не задан, элементы будут удалены из самого верхнего
уровня иерархии. Метод возвращает значение True, если операция успешно выполнена;
- setData (<QModelIndex>, <Значение>[, role=EditRole]) - задает значение для роли role элемента, на который указывает индекс <QModelIndex>.
Метод возвращает значение True, если операция выполнена успешно. Пример:
lst = QtWidgets.QComboBox()
slm = QtCore.QStringListModel (parent = window)
slm.insertRows(0,4)
slm.setData(slm.index(0), 'Perl')
slm.setData(slm.index(1), 'PHP')
slm.setData(slm.index(2), 'Python')
slm.setData(slm.index(3), 'Ruby')
lst.setModel(slm)
- data (<QModelIndex>, <Роль>) - возвращает данные, хранимые в указанной роли элемента, на который ссылается индекс <QModelIndex>;
- rowCount ([parent=QModelIndex()]) - возвращает количество элементов в модели. Необязательный параметр parent указывает элемент верхнего уровня, при этом будет возвращено
количество вложенных в него элементов, - если параметр не задан, будет возвращено количество элементов верхнего уровня иерархии;
- sort (<Индекс столбца>[, order=AscendingOrder]) - производит сортировку. Если во втором параметре указан атрибут AscendingOrder класса QtCore.Qt,
то сортировка производится в прямом порядке, а если DescendingOrder - то в обратном.
На следующем шаге мы рассмотрим класс QStandardItemModel.
Предыдущий шаг
Содержание
Следующий шаг