Класс QItemSelectionModel
Класс QItemSelectionModel отслеживает выбранные элементы в представлении. Подробнее...
| Заголовок: | #include <QItemSelectionModel> |
| CMake: | find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Наследуется от: | QObject |
Общедоступные типы
| Перечисление | SelectionFlag { NoUpdate, Clear, Select, Deselect, Toggle, …, ClearAndSelect } |
| Флаги | SelectionFlags |
Свойства
- selectedIndexes : const QModelIndexList
Общедоступные функции
| QItemSelectionModel(QAbstractItemModel *model, QObject *parent) | |
| QItemSelectionModel(QAbstractItemModel *model = nullptr) | |
| virtual | ~QItemSelectionModel() |
| bool | columnIntersectsSelection(int column, const QModelIndex &parent = QModelIndex()) const |
| QModelIndex | currentIndex() const |
| bool | hasSelection() const |
| bool | isColumnSelected(int column, const QModelIndex &parent = QModelIndex()) const |
| bool | isRowSelected(int row, const QModelIndex &parent = QModelIndex()) const |
| bool | isSelected(const QModelIndex &index) const |
| const QAbstractItemModel * | model() const |
| QAbstractItemModel * | model() |
| bool | rowIntersectsSelection(int row, const QModelIndex &parent = QModelIndex()) const |
| QModelIndexList | selectedColumns(int row = 0) const |
| QModelIndexList | selectedIndexes() const |
| QModelIndexList | selectedRows(int column = 0) const |
| const QItemSelection | selection() const |
| void | setModel(QAbstractItemModel *model) |
Общедоступные слоты
| virtual void | clear() |
| virtual void | clearCurrentIndex() |
| void | clearSelection() |
| virtual void | reset() |
| virtual void | select(const QItemSelection &selection, QItemSelectionModel::SelectionFlags command) |
| virtual void | select(const QModelIndex &index, QItemSelectionModel::SelectionFlags command) |
| virtual void | setCurrentIndex(const QModelIndex &index, QItemSelectionModel::SelectionFlags command) |
Сигналы
| void | currentChanged(const QModelIndex ¤t, const QModelIndex &previous) |
| void | currentColumnChanged(const QModelIndex ¤t, const QModelIndex &previous) |
| void | currentRowChanged(const QModelIndex ¤t, const QModelIndex &previous) |
| void | modelChanged(QAbstractItemModel *model) |
| void | selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) |
Защищённые функции
| void | emitSelectionChanged(const QItemSelection &newSelection, const QItemSelection &oldSelection) |
Подробное описание
Класс QItemSelectionModel отслеживает выбранные элементы в представлении или в нескольких представлениях, связанных с одним моделью. Он также отслеживает текущий выбранный элемент в представлении.
Класс QItemSelectionModel относится к классам модели/представления и является частью фреймворка Qt модель/представление.
Выбранные элементы хранятся с помощью диапазонов. В случае необходимости изменения выбранных элементов используйте select() и передайте либо QItemSelection, либо QModelIndex и QItemSelectionModel::SelectionFlag.
QItemSelectionModel использует двухслойный подход к управлению выделением, обрабатывая как выделенные элементы, которые были подтверждены, так и элементы, которые входят в текущий выбор. Текущие выбранные элементы являются частью текущего интерактивного выбора (например, при выделении резиновым прямоугольником или с помощью клавиши Shift).
Для обновления текущих выделенных элементов используйте побитовое ИЛИ QItemSelectionModel::Current и любой другой SelectionFlags. Если вы опустите команду QItemSelectionModel::Current, будет создан новый текущий выбор, а предыдущий будет добавлен к общему выбору. Все функции работают с обеими слоями; например, selecteditems() вернёт элементы из обоих слоёв.
Примечание: Начиная с версии 5.5, model, hasSelection и currentIndex являются свойствами метаобъекта.
См. также Модель/Представление программирование, QAbstractItemModel и Пример графика.
Документация по типу члена
Перечисление QItemSelectionModel::SelectionFlagФлаги QItemSelectionModel::SelectionFlags
Это перечисление описывает способ обновления модели выбора.
| Константа | Значение | Описание |
|---|---|---|
QItemSelectionModel::NoUpdate |
0x0000 |
Выбор не будет осуществлен. |
QItemSelectionModel::Clear |
0x0001 |
Полный выбор будет очищен. |
QItemSelectionModel::Select |
0x0002 |
Все указанные индексы будут выбраны. |
QItemSelectionModel::Deselect |
0x0004 |
Все указанные индексы будут сняты с выбора. |
QItemSelectionModel::Toggle |
0x0008 |
Все указанные индексы будут выбраны или сняты с выбора в зависимости от их текущего состояния. |
QItemSelectionModel::Current |
0x0010 |
Текущий выбор будет обновлен. |
QItemSelectionModel::Rows |
0x0020 |
Все индексы будут расширены, чтобы занимать строки. |
QItemSelectionModel::Columns |
0x0040 |
Все индексы будут расширены, чтобы занимать столбцы. |
QItemSelectionModel::SelectCurrent |
Select | Current |
Сочетание выбора и текущего состояния, для удобства. |
QItemSelectionModel::ToggleCurrent |
Toggle | Current |
Сочетание переключения и текущего состояния, для удобства. |
QItemSelectionModel::ClearAndSelect |
Clear | Select |
Сочетание очистки и выбора, для удобства. |
Тип SelectionFlags — это псевдоним для QFlags<SelectionFlag>. Он хранит логическое ИЛИ сочетание значений SelectionFlag.
Документация по свойствам
[read-only, since 5.5] selectedIndexes : const QModelIndexList
Это свойство было введено в Qt 5.5.
Функции доступа:
| QModelIndexList | selectedIndexes() const |
Сигнал уведомления:
| void | selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) |
Документация по членам-функциям
QItemSelectionModel::QItemSelectionModel(QAbstractItemModel *model, QObject *parent)
Создает модель выбора, которая работает с указанной моделью элементов model с parent.
QItemSelectionModel::QItemSelectionModel(QAbstractItemModel *model = nullptr)
Создает модель выбора, которая работает с указанной моделью элементов model.
[virtual slot] void QItemSelectionModel::clear()
Очищает модель выбора. Вызывает selectionChanged() и currentChanged().
[virtual slot] void QItemSelectionModel::clearCurrentIndex()
Очищает текущий индекс. Вызывает currentChanged().
[slot] void QItemSelectionModel::clearSelection()
Очищает выбор в модели выбора. Вызывает selectionChanged().
[signal] void QItemSelectionModel::currentChanged(const QModelIndex ¤t, const QModelIndex &previous)
Этот сигнал генерируется всякий раз, когда изменяется текущий элемент. Предыдущий индекс элемента модели заменяется индексом current в качестве текущего элемента выбора.
Обратите внимание, что этот сигнал не будет сгенерирован при сбросе модели элементов.
См. также currentIndex(), setCurrentIndex() и selectionChanged().
[signal] void QItemSelectionModel::currentColumnChanged(const QModelIndex ¤t, const QModelIndex &previous)
Этот сигнал генерируется, если текущий элемент изменяется, и его столбец отличается от столбца предыдущего текущего элемента.
Обратите внимание, что этот сигнал не будет сгенерирован при сбросе модели элементов.
См. также currentChanged(), currentRowChanged(), currentIndex() и setCurrentIndex().
[signal] void QItemSelectionModel::currentRowChanged(const QModelIndex ¤t, const QModelIndex &previous)
Этот сигнал генерируется, если текущий элемент изменяется, и его строка отличается от строки предыдущего текущего элемента.
Обратите внимание, что этот сигнал не будет сгенерирован при сбросе модели элементов.
См. также currentChanged(), currentColumnChanged(), currentIndex() и setCurrentIndex().
[signal, since 5.5] void QItemSelectionModel::modelChanged(QAbstractItemModel *model)
Этот сигнал генерируется, когда модель model успешно устанавливается с помощью setModel().
Эта функция была введена в Qt 5.5.
См. также model() и setModel().
[virtual slot] void QItemSelectionModel::reset()
Очищает модель выбора. Не генерирует никаких сигналов.
[virtual slot] void QItemSelectionModel::select(const QItemSelection &selection, QItemSelectionModel::SelectionFlags command)
Выбирает элемент selection, используя указанную команду command, и генерирует selectionChanged().
См. также QItemSelectionModel::SelectionFlag.
[virtual slot] void QItemSelectionModel::select(const QModelIndex &index, QItemSelectionModel::SelectionFlags command)
Выбирает элемент модели index, используя указанную команду command, и генерирует selectionChanged().
См. также QItemSelectionModel::SelectionFlags.
[signal] void QItemSelectionModel::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
Этот сигнал генерируется всякий раз, когда изменяется выбор. Изменение выбора представлено как выбор элементов deselected и выбор элементов selected.
Обратите внимание, что текущий индекс изменяется независимо от выбора. Также обратите внимание, что этот сигнал не будет сгенерирован при сбросе модели элементов.
Элементы, которые остаются выбранными, но изменяют свой индекс, не включаются в selected и deselected. Таким образом, этот сигнал может быть сгенерирован с пустыми selected и deselected, если изменяются только индексы выбранных элементов.
Примечание: Сигнал-уведомление для свойства selectedIndexes.
См. также select() и currentChanged().
[virtual slot] void QItemSelectionModel::setCurrentIndex(const QModelIndex &index, QItemSelectionModel::SelectionFlags command)
Устанавливает индекс элемента модели index в качестве текущего элемента и генерирует currentChanged(). Текущий элемент используется для навигации с помощью клавиатуры и индикации фокуса; он независим от любых выбранных элементов, хотя выбранный элемент также может быть текущим элементом.
В зависимости от указанной команды command, индекс index также может стать частью текущего выбора.
См. также currentIndex() и select().
[virtual] QItemSelectionModel::~QItemSelectionModel()
Уничтожает модель выделения.
[invokable] bool QItemSelectionModel::columnIntersectsSelection(int column, const QModelIndex &parent = QModelIndex()) const
Возвращает true, если в column с заданным parent выбраны какие-либо элементы.
Примечание: С Qt 5.15, значение по умолчанию для parent — пустой индекс модели.
Примечание: Данная функция может быть вызвана через систему метаобъектов и из QML. См. Q_INVOKABLE.
QModelIndex QItemSelectionModel::currentIndex() const
Возвращает индекс элемента модели для текущего элемента или недействительный индекс, если текущего элемента нет.
См. также setCurrentIndex().
[protected] void QItemSelectionModel::emitSelectionChanged(const QItemSelection &newSelection, const QItemSelection &oldSelection)
Сравнивает два выделения newSelection и oldSelection и испускает selectionChanged() с девыбранными и выбранными элементами.
bool QItemSelectionModel::hasSelection() const
Возвращает true, если модель выделения содержит какой-либо выбранный элемент, в противном случае возвращает false.
[invokable] bool QItemSelectionModel::isColumnSelected(int column, const QModelIndex &parent = QModelIndex()) const
Возвращает true если все элементы в column с заданным parent выбраны.
Обратите внимание, что эта функция обычно быстрее, чем вызов isSelected() для всех элементов в том же столбце, и невыбираемые элементы игнорируются.
Примечание: С Qt 5.15, значение по умолчанию для parent — пустой индекс модели.
Примечание: Данная функция может быть вызвана через систему метаобъектов и из QML. См. Q_INVOKABLE.
[invokable] bool QItemSelectionModel::isRowSelected(int row, const QModelIndex &parent = QModelIndex()) const
Возвращает true если все элементы в row с заданным parent выбраны.
Обратите внимание, что эта функция обычно быстрее, чем вызов isSelected() для всех элементов в той же строке, и невыбираемые элементы игнорируются.
Примечание: С Qt 5.15, значение по умолчанию для parent — пустой индекс модели.
Примечание: Данная функция может быть вызвана через систему метаобъектов и из QML. См. Q_INVOKABLE.
[invokable] bool QItemSelectionModel::isSelected(const QModelIndex &index) const
Возвращает true если указанный индекс элемента модели index выбран.
Примечание: Данная функция может быть вызвана через систему метаобъектов и из QML. См. Q_INVOKABLE.
const QAbstractItemModel *QItemSelectionModel::model() const
Возвращает модель элементов, на которой работает модель выделения.
См. также setModel().
[since 5.5] QAbstractItemModel *QItemSelectionModel::model()
Возвращает модель элементов, на которой работает модель выделения.
Эта функция была добавлена в Qt 5.5.
[invokable] bool QItemSelectionModel::rowIntersectsSelection(int row, const QModelIndex &parent = QModelIndex()) const
Возвращает true если в row с заданным parent выбраны какие-либо элементы.
Примечание: С Qt 5.15, значение по умолчанию для parent — пустой индекс модели.
Примечание: Данная функция может быть вызвана через систему метаобъектов и из QML. См. Q_INVOKABLE.
[invokable] QModelIndexList QItemSelectionModel::selectedColumns(int row = 0) const
Возвращает индексы в заданной row для столбцов, где все строки выбраны.
Примечание: Данная функция может быть вызвана через систему метаобъектов и из QML. См. Q_INVOKABLE.
См. также selectedIndexes() и selectedRows().
QModelIndexList QItemSelectionModel::selectedIndexes() const
Возвращает список всех выбранных индексов элементов модели. Список не содержит дубликатов и не отсортирован.
Примечание: Функция-геттер для свойства selectedIndexes.
[invokable] QModelIndexList QItemSelectionModel::selectedRows(int column = 0) const
Возвращает индексы в заданном column для строк, где все столбцы выбраны.
Примечание: Данная функция может быть вызвана через систему метаобъектов и из QML. См. Q_INVOKABLE.
См. также selectedIndexes() и selectedColumns().
const QItemSelection QItemSelectionModel::selection() const
Возвращает диапазоны выделения, сохранённые в модели выделения.
[since 5.5] void QItemSelectionModel::setModel(QAbstractItemModel *model)
Устанавливает модель в model. Сигнал modelChanged() будет испущен.
Эта функция была добавлена в Qt 5.5.
См. также model() и modelChanged().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qitemselectionmodel.html