Класс QXmlNodeModelIndex
Класс QXmlNodeModelIndex идентифицирует узел в модели узлов XML, подклассе QAbstractXmlNodeModel. Подробнее...
| Заголовок: | #include <QXmlNodeModelIndex> |
| qmake: | QT += xmlpatterns |
| С момента: | Qt 4.4 |
Этот класс был представлен в Qt 4.4.
Примечание: Все функции в этом классе являются реентерабельными.
Типы публичного интерфейса
| перечисление | DocumentOrder { Precedes, Follows, Is } |
| тип | List |
| перечисление | NodeKind { Attribute, Text, Comment, Document, Element, …, ProcessingInstruction } |
Публичные функции
| QXmlNodeModelIndex(const QXmlNodeModelIndex &other) | |
| QXmlNodeModelIndex() | |
| qint64 | additionalData() const |
| qint64 | data() const |
| void * | internalPointer() const |
| bool | isNull() const |
| const QAbstractXmlNodeModel * | model() const |
| bool | operator!=(const QXmlNodeModelIndex &other) const |
| bool | operator==(const QXmlNodeModelIndex &other) const |
Подробное описание
QXmlNodeModelIndex — это индекс в модели узлов XML. Он содержит:
- Указатель на модель узлов XML, возвращаемый model(), и
- Некоторые данные, возвращаемые data(), internalPointer() и additionalData().
Поскольку QXmlNodeModelIndex — это преднамеренно простой класс, у него нет функций-членов для доступа к свойствам узлов. Например, у него нет функций для получения имени узла или списка его атрибутов или дочерних узлов. Если вам нужно извлечь такую информацию из результатов запроса, есть два способа.
- Отправьте результат вашего XQuery в приёмник XML, или
- Позвольте вашему XQuery выполнить всю работу по созданию желаемого результата.
Второй случай поясняется примером. Предположим, вы хотите заполнить список виджетов значениями определенных атрибутов из набора элементов результатов. Вы можете написать XQuery, чтобы вернуть набор элементов, а затем написать код для перебора элементов результатов, получения их атрибутов и извлечения необходимых строковых значений. Но более простой способ — просто дополнить ваш XQuery для поиска нужных значений атрибутов. Затем всё, что вам нужно сделать, — это оценить XQuery с помощью версии QXmlQuery::evaluateTo(), которая заполняет QStringList, которую вы можете напрямую отправить в свой виджет.
QXmlNodeModelIndex не накладывает никаких ограничений на data значение, которое должен содержать QXmlNodeModelIndex. Значение данных определяется связанной моделью узлов. Поскольку QXmlNodeModelIndex зависит от конкретного подкласса QAbstractXmlNodeModel для своего существования, единственный способ создать экземпляр QXmlNodeModelIndex — попросить модель узлов создать его для вас с помощью QAbstractXmlNodeModel::createIndex(). Поскольку эта функция защищена, обычно лучше написать публичную функцию, которая создаёт QXmlNodeModelIndex из аргументов, подходящих для вашей конкретной модели узлов.
Индекс узла по умолчанию считается нулевым, т. е. isNull() возвращает true.
QXmlNodeModelIndex и QAbstractXmlNodeModel следуют той же схеме проектирования, что и QModelIndex и QAbstractItemModel.
Документация по типам членов
перечисление QXmlNodeModelIndex::DocumentOrder
Идентифицирует конкретный оператор сравнения узлов, который следует использовать.
| Постоянная | Значение | Описание |
|---|---|---|
QXmlNodeModelIndex::Precedes |
-1 |
Указывает на оператор \<\<. Проверяет, предшествует ли первый операнд второму в документе. |
QXmlNodeModelIndex::Follows |
1 |
Указывает на оператор \>\>. Проверяет, следует ли первый операнд за вторым в документе. |
QXmlNodeModelIndex::Is |
0 |
Указывает на оператор is. Проверяет, имеют ли два узла одинаковую идентичность узла. |
тип QXmlNodeModelIndex::List
Тип-синоним для QList<QXmlNodeModelIndex>.
перечисление QXmlNodeModelIndex::NodeKind
Идентифицирует тип узла.
| Постоянная | Значение | Описание |
|---|---|---|
QXmlNodeModelIndex::Attribute |
1 |
Идентифицирует атрибут узел |
QXmlNodeModelIndex::Text |
64 |
Идентифицирует текстовый узел |
QXmlNodeModelIndex::Comment |
2 |
Идентифицирует узел комментария |
QXmlNodeModelIndex::Document |
4 |
Идентифицирует узел документа |
QXmlNodeModelIndex::Element |
8 |
Идентифицирует узел элемента |
QXmlNodeModelIndex::Namespace |
16 |
Идентифицирует узел пространства имен |
QXmlNodeModelIndex::ProcessingInstruction |
32 |
Идентифицирует инструкцию обработки. |
Обратите внимание, что необъявленная декларация XML в самом начале документа XML не является инструкцией обработки
См. также QAbstractXmlNodeModel::kind().
Документация по функциям-членам
QXmlNodeModelIndex::QXmlNodeModelIndex(const QXmlNodeModelIndex &other)
Стандартный конструктор копирования. Создаёт экземпляр QXmlNodeModelIndex, являющийся копией other.
QXmlNodeModelIndex::QXmlNodeModelIndex()
Конструктор по умолчанию. Создаёт элемент, который является null.
См. также isNull().
qint64 QXmlNodeModelIndex::additionalData() const
Возвращает второе значение данных. Индекс узла содержит два значения данных. data() возвращает первое из них.
См. также data().
qint64 QXmlNodeModelIndex::data() const
Возвращает первое значение данных. Индекс узла содержит два значения данных. additionalData() возвращает второе.
См. также additionalData().
void *QXmlNodeModelIndex::internalPointer() const
Возвращает первое значение данных как указатель void*.
См. также additionalData().
bool QXmlNodeModelIndex::isNull() const
Возвращает true, если этот QXmlNodeModelIndex является значением, созданным по умолчанию, иначе false.
Нулевой QXmlNodeModelIndex не представляет ни одного узла и не может быть использован совместно с QAbstractXmlNodeModel.
const QAbstractXmlNodeModel *QXmlNodeModelIndex::model() const
Возвращает QAbstractXmlNodeModel, к которому относится данный индекс узла. QXmlNodeModelIndex не владеет QAbstractXmlNodeModel и не отслеживает его жизненный цикл, поэтому этот указатель станет висячим, если QAbstractXmlNodeModel будет удалён первым.
Нет сетера для модели узла, так как экземпляры QXmlNodeModelIndex создаются только с помощью QAbstractXmlNodeModel::createIndex().
bool QXmlNodeModelIndex::operator!=(const QXmlNodeModelIndex &other) const
Возвращает true, если other — тот же узел, что и этот.
bool QXmlNodeModelIndex::operator==(const QXmlNodeModelIndex &other) const
Возвращает true, если этот узел такой же, как other. Этот оператор не сравнивает значения, потомков или имена узлов. Он сравнивает идентификаторы узлов, то есть, являются ли два узла из одного документа и находятся ли они в точно в том же месте.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qxmlnodemodelindex.html