Шаг 154.
Библиотека PyQt5.
Списки и таблицы. Управление выделением элементов
На этом шаге мы рассмотрим назначение, формат конструктора, основные методы и сигналы класса QItemSelectionModel.
Класс QItemSelectionModel, объявленный в модуле QtCore, реализует модель, позволяющую централизованно управлять выделением сразу в нескольких представлениях. Установить
модель выделения позволяет метод setSelectionModel(<QItemSelectionModel>) класса QAbstractItemView, а получить ссылку на модель можно с помощью метода selectionModel().
Если одна модель выделения установлена сразу в нескольких представлениях, то выделение элемента в одном представлении приведет к выделению соответствующего элемента в другом представлении.
Иерархия наследования выглядит так:
QObject - QItemSelectionModel
Форматы конструктора класса QItemSelectionModel:
<Объект> = QItemSelectionModel(<Модель>)
<Объект> = QItemSelectionModel(<Модель>, <Родитель>)
Класс QItemSelectionModel поддерживает следующие полезные методы (полный их список приведен на странице
https://doc.qt.io/qt-5/qitemselectionmodel.html):
- hasSelection () - возвращает значение True, если существует выделенный элемент, и False - в противном случае;
- isSelected (<QModelIndex>) - возвращает значение True, если элемент с указанным индексом (экземпляр класса QModelIndex) выделен, и False - в противном случае;
- isRowSelected (<Индекс>, <QModelIndex>) - возвращает значение True, если строка с индексом <Индекс> и родителем <QModelIndex> выделена, и False - в противном случае;
- isColumnSelected (<Индекс>, <QModelIndex>) - возвращает значение True, если столбец с индексом <Индекс> и родителем <QModelIndex> выделен, и False - в противном случае;
- rowIntersectsSelection (<Индекс>, <QModelIndex>) - возвращает значение True, если строка с индексом <Индекс> и родителем <QModelIndex> содержит выделенный элемент, и False - в противном случае;
- columnIntersectsSelection (<Индекс>, <QModelIndex>) - возвращает значение True, если столбец с индексом <Индекс> и родителем <QModelIndex> содержит выделенный элемент, и False - в противном случае;
- selectedIndexes () - возвращает список индексов (экземпляров класса QModelIndex) выделенных элементов или пустой список, если выделенных элементов нет;
- selectedRows ([<Индекс столбца>=0]) - возвращает список индексов (экземпляров класса QModelIndex) выделенных элементов из указанного столбца. Элемент попадет в список только в том случае, если строка выделена полностью;
- selectedColumns ([<Индекс строки>=0]) - возвращает список индексов (экземпляров класса QModelIndex) выделенных элементов из указанной строки. Элемент попадет в список только в том случае, если столбец выделен полностью;
- selection () - возвращает ссылку на экземпляр класса QItemSelection;
- select (<QModelIndex>, <Режим>) - изменяет выделение элемента с указанным индексом. Во втором параметре указываются следующие атрибуты (или их комбинация через оператор |) класса QItemSelectionModel:
- NoUpdate - без изменений;
- Clear - снимает выделение всех элементов;
- Select - выделяет элемент;
- Deselect - снимает выделение с элемента;
- Toggle - выделяет элемент, если он не выделен, или снимает выделение, если элемент был выделен;
- Current - обновляет выделение текущего элемента;
- Rows - индекс будет расширен так, чтобы охватить всю строку;
- Columns - индекс будет расширен так, чтобы охватить весь столбец;
- SelectCurrent - комбинация Select | Current;
- ToggleCurrent - комбинация Toggle | Current;
- ClearAndSelect - комбинация Clear | Select.
Метод является слотом;
- select (<QItemSelection>, <Режим>) - изменяет выделение элементов. Метод является слотом;
- setCurrentIndex (<QModelIndex>, <Режим>) - делает элемент текущим и изменяет режим выделения. Метод является слотом;
- currentIndex () - возвращает индекс (экземпляр класса QModelIndex) текущего элемента;
- clearSelection () - снимает все выделения. Метод является слотом.
Класс QItemSelectionModel поддерживает следующие сигналы:
- currentChanged (<QModelIndex>, <QModelIndex>) - генерируется при изменении индекса текущего элемента. Внутри обработчика через первый параметр доступен индекс предыдущего элемента, а через второй - индекс нового элемента;
- currentRowChanged (<QModelIndex>, <QModelIndex>) - генерируется при выделении элемента из другой строки. Внутри обработчика через первый параметр доступен индекс предыдущего элемента, а через второй - индекс нового элемента;
- currentColumnChanged (<QModelIndex>, <QModelIndex>) - генерируется при выделении элемента из другого столбца. Внутри обработчика через первый параметр доступен индекс предыдущего элемента, а через второй - индекс нового элемента;
- selectionChanged (<QItemSelection>, <QItemSelection>) - генерируется при изменении выделения. Внутри обработчика через первый параметр доступно предыдущее выделение, а через второй - новое выделение.
На следующем шаге мы рассмотрим промежуточные модели.
Предыдущий шаг
Содержание
Следующий шаг