Шаг 139.
Библиотека PyQt5.
Списки и таблицы. Модели. Доступ к данным внутри модели
На этом шаге мы рассмотрим, как реализуется такой доступ.
Доступ к данным внутри модели реализуется с помощью класса QModelIindex из модуля QtCore.
Чаще всего экземпляр класса QModelIndex создается с помощью метода index() какого-либо класса модели или метода
currentIndex(), унаследованного моделями из класса QAbstractItemView. Такой экземпляр указывает на конкретные данные.
Если запрошенных данных в модели нет, возвращается пустой, невалидный экземпляр класса QModelIndex. Его также можно создать
обычным вызовом конструктора:
Класс QModelIndex поддерживает следующие методы:
- isValid () - возвращает значение True, если объект является валидным, и False - в противном случае;
- data ([role=DisplayRole]) - возвращает данные, относящиеся к указанной в параметре role роли (по умолчанию - выводимый на
экран текст элемента списка);
- flags () - возвращает свойства элемента в виде комбинации следующих атрибутов класса Qtcore.Qt:
- NoItemFlags (или 0) - элемент не имеет свойств;
- ItemIsSelectable (или 1) - элемент можно выделить;
- ItemIsEditable (или 2) - элемент можно редактировать;
- ItemIsDragEnabled (или 4) - элемент можно перетаскивать;
- ItemIsDropEnabled (или 8) - в элемент можно сбрасывать перетаскиваемые данные;
- ItemIsUserCheckable (или 16) - элемент может быть установлен и сброшен;
- ItemIsEnabled (или 32) - пользователь может взаимодействовать с элементом;
- ItemIsTristate (или 64) - элемент имеет три состояния;
- ItemNeverHasChildren (или 128) - элемент не может иметь вложенные элементы;
- row () - возвращает индекс строки;
- column () - возвращает индекс столбца;
- parent () - возвращает индекс элемента (экземпляр класса QModelIndex), расположенного на один уровень выше по иерархии. Если такого элемента нет, возвращается невалидный экземпляр класса QModelIndex;
- child (<Строка>, <Столбец>) - возвращает индекс элемента (экземпляр класса QModelIndex), расположенного на
один уровень ниже указанной позиции по иерархии. Если такого элемента нет, возвращается невалидный экземпляр класса QModelIndex;
- sibling (<Строка>, <Столбец>) - возвращает индекс элемента (экземпляр класса QModelIndex), расположенного
на том же уровне вложенности на указанной позиции. Если такого элемента нет, возвращается невалидный экземпляр класса QModelIndex;
- model () - возвращает ссылку на модель.
Также класс QModelIndex поддерживает операторы сравнения ==, < и !=, позволяющие сравнивать экземпляры по их индексам.
Следует учитывать, что модель может измениться - тогда экземпляр класса QModelIndex будет ссылаться на несуществующий уже элемент.
Если необходимо сохранить ссылку на элемент, следует воспользоваться классом QPersistentModelIndex, который содержит те же самые
методы, но обеспечивает валидность ссылки.
На следующем шаге мы рассмотрим класс QStringListModel.
Предыдущий шаг
Содержание
Следующий шаг