Класс QXmlNodeModelIndex
Класс QXmlNodeModelIndex идентифицирует узел в модели узлов XML, унаследованной от QAbstractXmlNodeModel. Подробнее...
| Заголовок: | #include <QXmlNodeModelIndex> |
| qmake: | QT += xmlpatterns |
| С момента: | Qt 4.4 |
Примечание: Все функции в этом классе являются реентерабельными.
Открытые типы
| Перечисление | DocumentOrder { Precedes, Follows, Is } |
| Тип | List |
| Перечисление | NodeKind { Attribute, Text, Comment, Document, ..., ProcessingInstruction } |
Открытые функции
| QXmlNodeModelIndex() | |
| QXmlNodeModelIndex(const QXmlNodeModelIndex &other) | |
| 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, унаследованной от QAbstractXmlNodeModel.
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()
Конструктор по умолчанию. Создаёт элемент, который является null.
См. также isNull().
QXmlNodeModelIndex::QXmlNodeModelIndex(const QXmlNodeModelIndex &other)
Стандартный конструктор копирования. Создаёт экземпляр QXmlNodeModelIndex, являющийся копией other.
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.
Null-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/archives/qt-5.11/qxmlnodemodelindex.html