Auf dieser Seite

QDomDocument Class

Die Klasse „QDomDocument“ repräsentiert ein XML-Dokument. Mehr...

Überschrift: #include <QDomDocument>
CMake: find_package(Qt6 REQUIRED COMPONENTS Xml)
target_link_libraries(mytarget PRIVATE Qt6::Xml)
qmake: QT += xml
Erbt von: QDomNode

Hinweis: Alle Funktionen dieser Klasse sind reentrant.

Öffentliche Typen

(since 6.5) struct ParseResult
(since 6.5) enum class ParseOption { Default, UseNamespaceProcessing, PreserveSpacingOnlyNodes }
flags ParseOptions

Öffentliche Funktionen

QDomDocument()
QDomDocument(const QDomDocumentType &doctype)
QDomDocument(const QString &name)
QDomDocument(const QDomDocument &document)
~QDomDocument()
QDomAttr createAttribute(const QString &name)
QDomAttr createAttributeNS(const QString &nsURI, const QString &qName)
QDomCDATASection createCDATASection(const QString &value)
QDomComment createComment(const QString &value)
QDomDocumentFragment createDocumentFragment()
QDomElement createElement(const QString &tagName)
QDomElement createElementNS(const QString &nsURI, const QString &qName)
QDomEntityReference createEntityReference(const QString &name)
QDomProcessingInstruction createProcessingInstruction(const QString &target, const QString &data)
QDomText createTextNode(const QString &value)
QDomDocumentType doctype() const
QDomElement documentElement() const
QDomElement elementById(const QString &elementId)
QDomNodeList elementsByTagName(const QString &tagname) const
QDomNodeList elementsByTagNameNS(const QString &nsURI, const QString &localName)
QDomImplementation implementation() const
QDomNode importNode(const QDomNode &importedNode, bool deep)
QDomNode::NodeType nodeType() const
(since 6.5) QDomDocument::ParseResult setContent(QAnyStringView text, QDomDocument::ParseOptions options = ParseOption::Default)
(since 6.5) QDomDocument::ParseResult setContent(QIODevice *device, QDomDocument::ParseOptions options = ParseOption::Default)
(since 6.5) QDomDocument::ParseResult setContent(QXmlStreamReader *reader, QDomDocument::ParseOptions options = ParseOption::Default)
(since 6.5) QDomDocument::ParseResult setContent(const QByteArray &data, QDomDocument::ParseOptions options = ParseOption::Default)
QByteArray toByteArray(int indent = 1) const
QString toString(int indent = 1) const
QDomDocument &operator=(const QDomDocument &other)

Ausführliche Beschreibung

Die Klasse QDomDocument repräsentiert das gesamte XML-Dokument. Konzeptionell ist sie die Wurzel des Dokumentbaums und bietet den primären Zugriff auf die Daten des Dokuments.

Da Elemente, Textknoten, Kommentare, Verarbeitungsanweisungen usw. nicht außerhalb des Kontexts eines Dokuments existieren können, enthält die Dokumentklasse auch die Factory-Funktionen, die zum Erstellen dieser Objekte benötigt werden. Die erstellten Knotenobjekte verfügen über eine Funktion „ ownerDocument()“, die sie mit dem Dokument verknüpft, in dessen Kontext sie erstellt wurden. Die DOM-Klassen, die am häufigsten verwendet werden, sind „ QDomNode “, „QDomDocument“, „ QDomElement “ und „ QDomText “.

Das geparste XML wird intern durch einen Baum aus Objekten dargestellt, auf den über die verschiedenen QDom-Klassen zugegriffen werden kann. Alle QDom-Klassen verweisen ausschließlich auf Objekte im internen Baum. Die internen Objekte im DOM-Baum werden gelöscht, sobald das letzte QDom-Objekt, das auf sie verweist, oder das QDomDocument selbst gelöscht wird.

Die Erstellung von Elementen, Textknoten usw. erfolgt mithilfe der verschiedenen in dieser Klasse bereitgestellten Factory-Funktionen. Die Verwendung der Standardkonstruktoren der QDom-Klassen führt lediglich zu leeren Objekten, die nicht bearbeitet oder in das Dokument eingefügt werden können.

Die Klasse `QDomDocument` verfügt über mehrere Funktionen zum Erstellen von Dokumentdaten, zum Beispiel ` createElement()`, ` createTextNode()`, ` createComment()`, ` createCDATASection()`, ` createProcessingInstruction()`, ` createAttribute()` und ` createEntityReference()`. Einige dieser Funktionen verfügen über Versionen, die Namespaces unterstützen, z. B. createElementNS() und createAttributeNS(). Die Funktion createDocumentFragment() dient dazu, Teile des Dokuments zu speichern; dies ist nützlich für die Bearbeitung komplexer Dokumente.

Der gesamte Inhalt des Dokuments wird mit ` setContent()` festgelegt. Diese Funktion analysiert die übergebene Zeichenkette als XML-Dokument und erstellt den DOM-Baum, der das Dokument darstellt. Das Stammelement ist über ` documentElement()` verfügbar. Die textuelle Darstellung des Dokuments kann mit ` toString()` abgerufen werden.

Hinweis: Der DOM-Baum kann unter Umständen viel Speicherplatz beanspruchen, wenn das XML-Dokument groß ist. Für solche Dokumente ist die Klasse ` QXmlStreamReader ` möglicherweise die bessere Lösung.

Mit der Methode ` importNode()` ist es möglich, einen Knoten aus einem anderen Dokument in das Dokument einzufügen.

Mit ` elementsByTagName()` oder ` elementsByTagNameNS()` können Sie eine Liste aller Elemente abrufen, die ein bestimmtes Tag aufweisen.

Die QDom-Klassen werden in der Regel wie folgt verwendet:

QDomDocument doc("mydocument");
QFile file("mydocument.xml");
if (!file.open(QIODevice::ReadOnly))
    return;
if (!doc.setContent(&file)) {
    file.close();
    return;
}
file.close();

// print out the element names of all elements that are direct children
// of the outermost element.
QDomElement docElem = doc.documentElement();

QDomNode n = docElem.firstChild();
while(!n.isNull()) {
    QDomElement e = n.toElement(); // try to convert the node to an element.
    if(!e.isNull()) {
        cout << qPrintable(e.tagName()) << '\n'; // the node really is an element.
    }
    n = n.nextSibling();
}

// Here we append a new element to the end of the document
QDomElement elem = doc.createElement("img");
elem.setAttribute("src", "myimage.png");
docElem.appendChild(elem);

Sobald „ doc “ und „ elem “ den Gültigkeitsbereich verlassen, wird der gesamte interne Baum, der das XML-Dokument darstellt, gelöscht.

Um ein Dokument mithilfe des DOM zu erstellen, verwenden Sie folgenden Code:

QDomDocument doc;
QDomElement root = doc.createElement("MyML");
doc.appendChild(root);

QDomElement tag = doc.createElement("Greeting");
root.appendChild(tag);

QDomText t = doc.createTextNode("Hello World");
tag.appendChild(t);

QString xml = doc.toString();

Weitere Informationen zum Document Object Model finden Sie in den DOM-Kernspezifikationen (Document Object Model, DOM) der Stufen 1 und 2.

Siehe auch DOM-Lesezeichen-Anwendung.

Dokumentation zu Mitgliedstypen

[since 6.5] enum class QDomDocument::ParseOption
flags QDomDocument::ParseOptions

Diese Enumeration beschreibt die möglichen Optionen, die beim Parsen eines XML-Dokuments mit der Methode „ setContent()“ verwendet werden können.

KonstanteWertBeschreibung
QDomDocument::ParseOption::Default0x00Es sind keine Parsing-Optionen festgelegt.
QDomDocument::ParseOption::UseNamespaceProcessing0x01Die Namespace-Verarbeitung ist aktiviert.
QDomDocument::ParseOption::PreserveSpacingOnlyNodes0x02Textknoten, die ausschließlich Leerzeichen enthalten, bleiben erhalten.

Diese Enumeration wurde in Qt 6.5 eingeführt.

Der Typ „ParseOptions“ ist ein typedef für „QFlags<ParseOption>“. Er speichert eine ODER-Kombination von „ParseOption“-Werten.

Siehe auch „ setContent()“.

Dokumentation der Mitgliedsfunktionen

QDomDocument::QDomDocument()

Erstellt ein leeres Dokument.

[explicit] QDomDocument::QDomDocument(const QDomDocumentType &doctype)

Erstellt ein Dokument mit dem Dokumenttyp „ doctype “.

Siehe auch ` QDomImplementation::createDocumentType()`.

[explicit] QDomDocument::QDomDocument(const QString &name)

Erstellt ein Dokument und legt den Namen des Dokumenttyps auf „ name “ fest.

QDomDocument::QDomDocument(const QDomDocument &document)

Erstellt eine Kopie von ` document`.

Die Daten der Kopie werden gemeinsam genutzt (flache Kopie): Das Ändern eines Knotens wirkt sich auch auf den anderen aus. Wenn Sie eine tiefe Kopie erstellen möchten, verwenden Sie „ cloneNode()“.

[noexcept] QDomDocument::~QDomDocument()

Löscht das Objekt und gibt dessen Ressourcen frei.

QDomAttr QDomDocument::createAttribute(const QString &name)

Erstellt ein neues Attribut namens „ name “, das in ein Element eingefügt werden kann, z. B. mit der Funktion „ QDomElement::setAttributeNode()“.

Wenn „ name “ kein gültiger XML-Name ist, richtet sich das Verhalten dieser Funktion nach „ QDomImplementation::InvalidDataPolicy “.

Siehe auch ` createAttributeNS()`.

QDomAttr QDomDocument::createAttributeNS(const QString &nsURI, const QString &qName)

Erstellt ein neues Attribut mit Namespace-Unterstützung, das in ein Element eingefügt werden kann. Der Name des Attributs lautet „ qName “ und die Namespace-URI ist „ nsURI “. Diese Funktion setzt außerdem „ QDomNode::prefix()“ und „ QDomNode::localName()“ auf entsprechende Werte (abhängig von „ qName “).

Wenn qName kein gültiger XML-Name ist, richtet sich das Verhalten dieser Funktion nach QDomImplementation::InvalidDataPolicy.

Siehe auch createAttribute().

QDomCDATASection QDomDocument::createCDATASection(const QString &value)

Erstellt einen neuen CDATA-Abschnitt für die Zeichenkette „ value “, der in das Dokument eingefügt werden kann, z. B. mit der Funktion „ QDomNode::appendChild()“.

Wenn „ value “ Zeichen enthält, die nicht in einem CDATA-Abschnitt gespeichert werden können, richtet sich das Verhalten dieser Funktion nach „ QDomImplementation::InvalidDataPolicy “.

Siehe auch QDomNode::appendChild(), QDomNode::insertBefore() und QDomNode::insertAfter().

QDomComment QDomDocument::createComment(const QString &value)

Erstellt einen neuen Kommentar für die Zeichenkette „ value “, der in das Dokument eingefügt werden kann, z. B. mit der Funktion „ QDomNode::appendChild()“.

Wenn „ value “ Zeichen enthält, die nicht in einem XML-Kommentar gespeichert werden können, richtet sich das Verhalten dieser Funktion nach „ QDomImplementation::InvalidDataPolicy “.

Siehe auch QDomNode::appendChild(), QDomNode::insertBefore() und QDomNode::insertAfter().

QDomDocumentFragment QDomDocument::createDocumentFragment()

Erstellt ein neues Dokumentfragment, in dem Teile des Dokuments gespeichert werden können, z. B. bei komplexen Bearbeitungen des Dokumentbaums.

QDomElement QDomDocument::createElement(const QString &tagName)

Erstellt ein neues Element namens „ tagName “, das in den DOM-Baum eingefügt werden kann, z. B. mit der Funktion „ QDomNode::appendChild()“.

Wenn „ tagName “ kein gültiger XML-Name ist, richtet sich das Verhalten dieser Funktion nach „ QDomImplementation::InvalidDataPolicy “.

Siehe auch „ createElementNS()“, „ QDomNode::appendChild()“, „ QDomNode::insertBefore()“ und „ QDomNode::insertAfter()“.

QDomElement QDomDocument::createElementNS(const QString &nsURI, const QString &qName)

Erstellt ein neues Element mit Namespace-Unterstützung, das in den DOM-Baum eingefügt werden kann. Der Name des Elements lautet „ qName “ und die Namespace-URI ist „ nsURI “. Diese Funktion setzt außerdem „ QDomNode::prefix()“ und „ QDomNode::localName()“ auf entsprechende Werte (abhängig von „ qName “).

Wenn „ qName “ eine leere Zeichenkette ist, wird ein Null-Element zurückgegeben, unabhängig davon, ob die Richtlinie für ungültige Daten festgelegt ist.

Siehe auch createElement().

QDomEntityReference QDomDocument::createEntityReference(const QString &name)

Erstellt eine neue Entitätsreferenz namens „ name “, die in das Dokument eingefügt werden kann, z. B. mithilfe von „ QDomNode::appendChild()“.

Wenn „ name “ kein gültiger XML-Name ist, richtet sich das Verhalten dieser Funktion nach „ QDomImplementation::InvalidDataPolicy “.

Siehe auch QDomNode::appendChild(), QDomNode::insertBefore() und QDomNode::insertAfter().

QDomProcessingInstruction QDomDocument::createProcessingInstruction(const QString &target, const QString &data)

Erstellt eine neue Verarbeitungsanweisung, die in das Dokument eingefügt werden kann, z. B. mit der Funktion „ QDomNode::appendChild()“. Diese Funktion legt als Ziel für die Verarbeitungsanweisung „ target “ und als Daten „ data “ fest.

Wenn „ target “ kein gültiger XML-Name ist oder die Daten Zeichen enthalten, die in einer Verarbeitungsanweisung nicht vorkommen dürfen, richtet sich das Verhalten dieser Funktion nach QDomImplementation::InvalidDataPolicy.

Siehe auch QDomNode::appendChild(), QDomNode::insertBefore() und QDomNode::insertAfter().

QDomText QDomDocument::createTextNode(const QString &value)

Erzeugt einen Textknoten für die Zeichenkette „ value “, der in den Dokumentbaum eingefügt werden kann, z. B. mit der Funktion „ QDomNode::appendChild()“.

Wenn „ value “ Zeichen enthält, die nicht als Zeichendaten eines XML-Dokuments gespeichert werden können (auch nicht in Form von Zeichenreferenzen), richtet sich das Verhalten dieser Funktion nach „ QDomImplementation::InvalidDataPolicy “.

Siehe auch „ QDomNode::appendChild()“, „ QDomNode::insertBefore()“ und „ QDomNode::insertAfter()“.

QDomDocumentType QDomDocument::doctype() const

Gibt den Dokumenttyp dieses Dokuments zurück.

QDomElement QDomDocument::documentElement() const

Gibt das Stammelement des Dokuments zurück.

QDomElement QDomDocument::elementById(const QString &elementId)

Gibt das Element zurück, dessen ID mit „ elementId “ übereinstimmt. Wurde kein Element mit dieser ID gefunden, gibt diese Funktion einen „ null element “ zurück.

Da die QDomClasses nicht wissen, welche Attribute Element-IDs sind, gibt diese Funktion immer ein ` null element` zurück. Dies kann sich in einer zukünftigen Version ändern.

QDomNodeList QDomDocument::elementsByTagName(const QString &tagname) const

Gibt ein ` QDomNodeList` zurück, das alle Elemente im Dokument mit dem Namen ` tagname` enthält. Die Reihenfolge der Knotenliste entspricht der Reihenfolge, in der sie bei einer Preorder-Traversierung des Elementbaums auftauchen.

Siehe auch ` elementsByTagNameNS()` und ` QDomElement::elementsByTagName()`.

QDomNodeList QDomDocument::elementsByTagNameNS(const QString &nsURI, const QString &localName)

Gibt eine ` QDomNodeList ` zurück, die alle Elemente des Dokuments enthält, deren lokaler Name ` localName ` lautet und deren Namensraum-URI ` nsURI` ist. Die Reihenfolge der Knotenliste entspricht der Reihenfolge, in der die Knoten bei einer Vorwärtsdurchquerung des Elementbaums auftauchen.

Siehe auch ` elementsByTagName()` und ` QDomElement::elementsByTagNameNS()`.

QDomImplementation QDomDocument::implementation() const

Gibt ein „ QDomImplementation “-Objekt zurück.

QDomNode QDomDocument::importNode(const QDomNode &importedNode, bool deep)

Importiert den Knoten „ importedNode “ aus einem anderen Dokument in dieses Dokument. „ importedNode “ verbleibt im ursprünglichen Dokument; diese Funktion erstellt eine Kopie, die innerhalb dieses Dokuments verwendet werden kann.

Diese Funktion gibt den importierten Knoten zurück, der zu diesem Dokument gehört. Der zurückgegebene Knoten hat keinen übergeordneten Knoten. Es ist nicht möglich, Knoten vom Typ „ QDomDocument “ und „ QDomDocumentType “ zu importieren. In diesen Fällen gibt diese Funktion einen „ null node “ zurück.

Ist „ importedNode “ ein „ null node “, wird ein Null-Knoten zurückgegeben.

Ist deep wahr, importiert diese Funktion nicht nur den Knoten importedNode, sondern dessen gesamten Teilbaum; ist sie falsch, wird nur der importedNode importiert. Das Argument deep hat keine Auswirkung auf QDomAttr - und QDomEntityReference -Knoten, da die Nachkommen von QDomAttr -Knoten immer importiert werden und die von QDomEntityReference -Knoten niemals importiert werden.

Das Verhalten dieser Funktion unterscheidet sich je nach Knotentyp geringfügig:

KnotentypVerhalten
QDomAttrDas „owner“-Element wird auf 0 gesetzt und das angegebene Flag im generierten Attribut auf „true“. Bei Attributknoten wird immer der gesamte Teilbaum von „ importedNode “ importiert: „ deep “ hat keine Auswirkung.
QDomDocumentDokumentknoten können nicht importiert werden.
QDomDocumentFragmentIst „ deep “ auf „true“ gesetzt, importiert diese Funktion das gesamte Dokumentfragment; andernfalls erzeugt sie lediglich ein leeres Dokumentfragment.
QDomDocumentTypeDokumenttyp-Knoten können nicht importiert werden.
QDomElementAttribute, für die „ QDomAttr::specified()“ wahr ist, werden ebenfalls importiert; andere Attribute werden nicht importiert. Ist „ deep “ wahr, importiert diese Funktion auch den Teilbaum von „ importedNode “; andernfalls importiert sie nur den Elementknoten (und einige Attribute, siehe oben).
QDomEntityEntitätsknoten können importiert werden, aber derzeit gibt es keine Möglichkeit, sie zu verwenden, da der Dokumenttyp in DOM Level 2 schreibgeschützt ist.
QDomEntityReferenceNachkommen von Entitätsreferenzknoten werden niemals importiert: „ deep “ hat keine Auswirkung.
QDomNotationNotationsknoten können importiert werden, können jedoch derzeit nicht verwendet werden, da der Dokumenttyp in DOM Level 2 schreibgeschützt ist.
QDomProcessingInstructionDas Ziel und der Wert der Verarbeitungsanweisung werden in den neuen Knoten kopiert.
QDomTextDer Text wird in den neuen Knoten kopiert.
QDomCDATASectionDer Text wird in den neuen Knoten kopiert.
QDomCommentDer Text wird in den neuen Knoten kopiert.

Siehe auch QDomElement::setAttribute(), QDomNode::insertBefore(), QDomNode::insertAfter(), QDomNode::replaceChild(), QDomNode::removeChild() und QDomNode::appendChild().

QDomNode::NodeType QDomDocument::nodeType() const

Gibt „ DocumentNode “ zurück.

[since 6.5] QDomDocument::ParseResult QDomDocument::setContent(QAnyStringView text, QDomDocument::ParseOptions options = ParseOption::Default)

[since 6.5] QDomDocument::ParseResult QDomDocument::setContent(QIODevice *device, QDomDocument::ParseOptions options = ParseOption::Default)

[since 6.5] QDomDocument::ParseResult QDomDocument::setContent(QXmlStreamReader *reader, QDomDocument::ParseOptions options = ParseOption::Default)

[since 6.5] QDomDocument::ParseResult QDomDocument::setContent(const QByteArray &data, QDomDocument::ParseOptions options = ParseOption::Default)

Diese Funktion analysiert das XML-Dokument aus dem Byte-Array ` data`, der String-View ` text`, dem IO-Objekt ` device` oder dem Stream ` reader ` und legt es als Inhalt des Dokuments fest. Sie versucht, die Kodierung des Dokuments gemäß der XML-Spezifikation zu ermitteln. Das Ergebnis der Analyse wird in ` ParseResult` zurückgegeben, das explizit in ` bool` konvertiert wird.

Mit dem Parameter „ options “ können Sie verschiedene Parsing-Optionen festlegen, beispielsweise um die Namespace-Verarbeitung zu aktivieren usw.

Standardmäßig ist die Namespace-Verarbeitung deaktiviert. Ist sie deaktiviert, führt der Parser beim Einlesen der XML-Datei keine Namespace-Verarbeitung durch. Die Funktionen ` QDomNode::prefix()`, ` QDomNode::localName()` und ` QDomNode::namespaceURI()` geben eine leere Zeichenkette zurück.

Ist die Namespace-Verarbeitung über die Parser- options aktiviert, erkennt der Parser Namespaces in der XML-Datei und setzt den Präfixnamen, den lokalen Namen und die Namespace-URI auf entsprechende Werte. Die Funktionen QDomNode::prefix(), QDomNode::localName() und QDomNode::namespaceURI() geben für alle Elemente und Attribute eine Zeichenkette zurück und liefern eine leere Zeichenkette, wenn das Element oder Attribut keinen Präfix hat.

Textknoten, die ausschließlich aus Leerzeichen bestehen, werden entfernt und erscheinen nicht in der ` QDomDocument`. Seit Qt 6.5 kann man ` QDomDocument::ParseOption::PreserveSpacingOnlyNodes ` als Parsing-Option übergeben, um festzulegen, dass Textknoten, die nur aus Leerzeichen bestehen, beibehalten werden müssen.

Entitätsreferenzen werden wie folgt behandelt:

  • Verweise auf interne allgemeine Entitäten und Zeichenentitäten, die im Inhalt vorkommen, werden einbezogen. Das Ergebnis ist ein „ QDomText “-Knoten, in dem die Verweise durch ihre entsprechenden Entitätswerte ersetzt wurden.
  • Verweise auf Parameterentitäten, die in der internen Teilmenge vorkommen, werden einbezogen. Das Ergebnis ist ein „ QDomDocumentType “-Knoten, der Entitäts- und Notationsdeklarationen enthält, wobei die Verweise durch ihre entsprechenden Entitätswerte ersetzt sind.
  • Jede Referenz auf eine allgemeine geparste Entität, die nicht in der internen Teilmenge definiert ist und im Inhalt vorkommt, wird als „ QDomEntityReference “-Knoten dargestellt.
  • Jede geparste Entitätsreferenz, die nicht in der internen Teilmenge definiert ist und außerhalb des Inhalts vorkommt, wird durch eine leere Zeichenkette ersetzt.
  • Jede nicht geparste Entitätsreferenz wird durch eine leere Zeichenkette ersetzt.

Hinweis: Die Überladung, die `IO device ` als Argument entgegennimmt, versucht, die Datei im schreibgeschützten Modus zu öffnen, sofern sie nicht bereits geöffnet ist. In diesem Fall ist der Aufrufer dafür verantwortlich, `close` aufzurufen. Dies wird sich in Qt 7 ändern, da dort die Datei ` device` nicht mehr geöffnet wird. Anwendungen sollten daher das Gerät selbst öffnen, bevor sie ` setContent()` aufrufen.

Diese Funktionen wurden in Qt 6.5 eingeführt.

Siehe auch „ ParseResult “ und „ ParseOptions “.

QByteArray QDomDocument::toByteArray(int indent = 1) const

Wandelt das geparste Dokument wieder in seine Textdarstellung um und gibt ein ` QByteArray ` zurück, das die als UTF-8 kodierten Daten enthält.

Diese Funktion verwendet ` indent ` als Abstand für die Einrückung von Unterelementen.

Siehe auch ` toString()`.

QString QDomDocument::toString(int indent = 1) const

Wandelt das geparste Dokument wieder in seine textuelle Darstellung um.

Diese Funktion verwendet „ indent “ als Abstandswert für die Einrückung von Unterelementen.

Ist „ indent “ gleich -1, wird überhaupt kein Leerzeichen hinzugefügt.

QDomDocument &QDomDocument::operator=(const QDomDocument &other)

Weist diesem DOM-Dokument „ other “ zu.

Die Daten der Kopie werden gemeinsam genutzt (flache Kopie): Das Ändern eines Knotens führt auch zu einer Änderung des anderen. Wenn Sie eine tiefe Kopie erstellen möchten, verwenden Sie ` cloneNode()`.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.