QUrl Class
Die Klasse „QUrl“ bietet eine praktische Schnittstelle für die Arbeit mit URLs. Mehr...
| Kopfzeile: | #include <QUrl> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QUrl ist Teil der Bereiche „Ein- und Ausgabe sowie Netzwerke“, „Netzwerkprogrammier-API“ und „Implizit gemeinsam genutzte Klassen“.
Hinweis: Alle Funktionen dieser Klasse sind reentrant.
QUrl-Vergleiche
| Kategorie | Vergleichbare Typen |
|---|---|
| schwach | QUrl |
Öffentliche Typen
(since 6.3) enum | AceProcessingOption { IgnoreIDNWhitelist, AceTransitionalProcessing } |
| flags | AceProcessingOptions |
| enum | ComponentFormattingOption { PrettyDecoded, EncodeSpaces, EncodeUnicode, EncodeDelimiters, EncodeReserved, …, FullyDecoded } |
| flags | ComponentFormattingOptions |
| flags | FormattingOptions |
| enum | ParsingMode { TolerantMode, StrictMode, DecodedMode } |
| enum | UrlFormattingOption { None, RemoveScheme, RemovePassword, RemoveUserInfo, RemovePort, …, NormalizePathSegments } |
| enum | UserInputResolutionOption { DefaultResolution, AssumeLocalFile } |
| flags | UserInputResolutionOptions |
Öffentliche Funktionen
| QUrl() | |
| QUrl(const QString &url, QUrl::ParsingMode parsingMode = TolerantMode) | |
| QUrl(const QUrl &other) | |
| QUrl(QUrl &&other) | |
| ~QUrl() | |
| QUrl | adjusted(QUrl::FormattingOptions options) const |
| QString | authority(QUrl::ComponentFormattingOptions options = PrettyDecoded) const |
| void | clear() |
| QString | errorString() const |
| QString | fileName(QUrl::ComponentFormattingOptions options = FullyDecoded) const |
| QString | fragment(QUrl::ComponentFormattingOptions options = PrettyDecoded) const |
| bool | hasFragment() const |
| bool | hasQuery() const |
| QString | host(QUrl::ComponentFormattingOptions options = FullyDecoded) const |
| bool | isEmpty() const |
| bool | isLocalFile() const |
| bool | isParentOf(const QUrl &childUrl) const |
| bool | isRelative() const |
| bool | isValid() const |
| bool | matches(const QUrl &url, QUrl::FormattingOptions options) const |
| QString | password(QUrl::ComponentFormattingOptions options = FullyDecoded) const |
| QString | path(QUrl::ComponentFormattingOptions options = FullyDecoded) const |
| int | port(int defaultPort = -1) const |
| QString | query(QUrl::ComponentFormattingOptions options = PrettyDecoded) const |
| QUrl | resolved(const QUrl &relative) const |
| QString | scheme() const |
| void | setAuthority(const QString &authority, QUrl::ParsingMode mode = TolerantMode) |
| void | setFragment(const QString &fragment, QUrl::ParsingMode mode = TolerantMode) |
| void | setHost(const QString &host, QUrl::ParsingMode mode = DecodedMode) |
| void | setPassword(const QString &password, QUrl::ParsingMode mode = DecodedMode) |
| void | setPath(const QString &path, QUrl::ParsingMode mode = DecodedMode) |
| void | setPort(int port) |
| void | setQuery(const QString &query, QUrl::ParsingMode mode = TolerantMode) |
| void | setQuery(const QUrlQuery &query) |
| void | setScheme(const QString &scheme) |
| void | setUrl(const QString &url, QUrl::ParsingMode parsingMode = TolerantMode) |
| void | setUserInfo(const QString &userInfo, QUrl::ParsingMode mode = TolerantMode) |
| void | setUserName(const QString &userName, QUrl::ParsingMode mode = DecodedMode) |
| void | swap(QUrl &other) |
| CFURLRef | toCFURL() const |
| QString | toDisplayString(QUrl::FormattingOptions options = FormattingOptions(PrettyDecoded)) const |
| QByteArray | toEncoded(QUrl::FormattingOptions options = FullyEncoded) const |
| QString | toLocalFile() const |
| NSURL * | toNSURL() const |
| QString | toString(QUrl::FormattingOptions options = FormattingOptions(PrettyDecoded)) const |
| QString | url(QUrl::FormattingOptions options = FormattingOptions(PrettyDecoded)) const |
| QString | userInfo(QUrl::ComponentFormattingOptions options = PrettyDecoded) const |
| QString | userName(QUrl::ComponentFormattingOptions options = FullyDecoded) const |
| QUrl & | operator=(QUrl &&other) |
| QUrl & | operator=(const QString &url) |
| QUrl & | operator=(const QUrl &url) |
Statische öffentliche Mitglieder
(since 6.3) QString | fromAce(const QByteArray &domain, QUrl::AceProcessingOptions options = {}) |
| QUrl | fromCFURL(CFURLRef url) |
| QUrl | fromEncoded(QByteArrayView input, QUrl::ParsingMode mode = TolerantMode) |
| QUrl | fromLocalFile(const QString &localFile) |
| QUrl | fromNSURL(const NSURL *url) |
| QString | fromPercentEncoding(const QByteArray &input) |
| QList<QUrl> | fromStringList(const QStringList &urls, QUrl::ParsingMode mode = TolerantMode) |
| QUrl | fromUserInput(const QString &userInput, const QString &workingDirectory = QString(), QUrl::UserInputResolutionOptions options = DefaultResolution) |
| QStringList | idnWhitelist() |
| void | setIdnWhitelist(const QStringList &list) |
(since 6.3) QByteArray | toAce(const QString &domain, QUrl::AceProcessingOptions options = {}) |
| QByteArray | toPercentEncoding(const QString &input, const QByteArray &exclude = QByteArray(), const QByteArray &include = QByteArray()) |
| QStringList | toStringList(const QList<QUrl> &urls, QUrl::FormattingOptions options = FormattingOptions(PrettyDecoded)) |
Verwandte Nicht-Mitglieder
| bool | operator!=(const QUrl &lhs, const QUrl &rhs) |
| QDataStream & | operator<<(QDataStream &out, const QUrl &url) |
| bool | operator==(const QUrl &lhs, const QUrl &rhs) |
| QDataStream & | operator>>(QDataStream &in, QUrl &url) |
Makros
Ausführliche Beschreibung
Es kann URLs sowohl in kodierter als auch in unkodierter Form analysieren und erstellen. QUrl unterstützt zudem internationalisierte Domänennamen (IDNs).
Die gängigste Art, QUrl zu verwenden, besteht darin, es über den Konstruktor zu initialisieren, indem ein ` QString ` übergeben wird, das eine vollständige URL enthält. QUrl-Objekte können auch aus einem ` QByteArray ` erstellt werden, das eine vollständige URL enthält, indem ` QUrl::fromEncoded()` verwendet wird, oder heuristisch aus unvollständigen URLs mithilfe von ` QUrl::fromUserInput()`. Die URL-Darstellung kann von einem QUrl entweder mit ` QUrl::toString()` oder ` QUrl::toEncoded()` abgerufen werden.
URLs können in zwei Formen dargestellt werden: kodiert oder unkodiert. Die unkodierte Darstellung eignet sich zur Anzeige für Benutzer, während die kodierte Darstellung in der Regel an einen Webserver gesendet wird. Beispielsweise würde die unkodierte URL „http://bühler.example.com/List of applicants.xml“ als „http://xn–bhler-kva.example.com/List%20of%20applicants.xml“ an den Server gesendet werden.
Eine URL kann auch Stück für Stück zusammengestellt werden, indem die Funktionen ` setScheme()`, ` setUserName()`, ` setPassword()`, ` setHost()`, ` setPort()`, ` setPath()`, ` setQuery()` und ` setFragment()` aufgerufen werden. Es stehen auch einige Hilfsfunktionen zur Verfügung: ` setAuthority()` legt den Benutzernamen, das Passwort, den Host und den Port fest. ` setUserInfo()` legt den Benutzernamen und das Passwort gleichzeitig fest.
Rufen Sie „ isValid()“ auf, um zu prüfen, ob die URL gültig ist. Dies kann zu jedem Zeitpunkt während der Erstellung einer URL erfolgen. Wenn „ isValid()“ den Wert „ false “ zurückgibt, sollten Sie die URL mit „ clear()“ bereinigen, bevor Sie fortfahren, oder von vorne beginnen, indem Sie eine neue URL mit „ setUrl()“ parsen.
Das Erstellen einer Abfrage ist besonders bequem mithilfe der Klasse ` QUrlQuery ` und ihrer Methoden ` QUrlQuery::setQueryItems()`, ` QUrlQuery::addQueryItem()` und ` QUrlQuery::removeQueryItem()`. Verwenden Sie ` QUrlQuery::setQueryDelimiters()`, um die Trennzeichen anzupassen, die für die Generierung der Abfragezeichenfolge verwendet werden.
Zur Vereinfachung der Generierung von kodierten URL-Strings oder Abfragezeichenfolgen stehen zwei statische Funktionen namens fromPercentEncoding() und toPercentEncoding() zur Verfügung, die sich mit der Prozentkodierung und -dekodierung von QString -Objekten befassen.
fromLocalFile() erstellt ein `QUrl`-Objekt, indem es einen lokalen Dateipfad analysiert. ` toLocalFile()` wandelt eine URL in einen lokalen Dateipfad um.
Die für Menschen lesbare Darstellung der URL wird mit toString() abgerufen. Diese Darstellung eignet sich dazu, einem Benutzer eine URL in unkodierter Form anzuzeigen. Die kodierte Form, wie sie von ` toEncoded()` zurückgegeben wird, ist hingegen für den internen Gebrauch bestimmt und wird an Webserver, E-Mail-Clients usw. übergeben. Beide Formen sind technisch korrekt und repräsentieren eindeutig dieselbe URL – tatsächlich führt die Übergabe beider Formen an den Konstruktor von `QUrl` oder an ` setUrl()` zum gleichen `QUrl`-Objekt.
QUrl entspricht der URI-Spezifikation aus RFC 3986 (Uniform Resource Identifier: Generic Syntax) und enthält Schemaerweiterungen aus RFC 1738 (Uniform Resource Locators). Die Regeln zur Groß-/Kleinschreibung in QUrl entsprechen RFC 3491 (Nameprep: Ein Stringprep-Profil für internationalisierte Domänennamen (IDN)). Es ist zudem mit der Datei-URI-Spezifikation von freedesktop.org kompatibel, vorausgesetzt, die Locale kodiert Dateinamen mit UTF-8 (wie von IDN gefordert).
Relative URLs vs. relative Pfade
Der Aufruf von ` isRelative()` gibt zurück, ob es sich um eine relative URL handelt oder nicht. Eine relative URL enthält kein ` scheme`. Beispiel:
qDebug() << QUrl("main.qml").isRelative(); // true: kein Schema
qDebug() << QUrl("qml/main.qml").isRelative(); // true: no scheme
qDebug() << QUrl("file:main.qml").isRelative(); // false: has "file" scheme
qDebug() << QUrl("file:qml/main.qml").isRelative(); // false: has "file" schemeBeachten Sie, dass eine URL absolut sein kann, obwohl sie einen relativen Pfad enthält, und umgekehrt:
// Absolute URL, relativer Pfad
QUrl url("file:file.txt");
qDebug() << url.isRelative(); // false: has "file" scheme
qDebug() << QDir::isAbsolutePath(url.path()); // false: relative path
// Relative URL, absoluter Pfad
url = QUrl("/home/user/file.txt");
qDebug() << url.isRelative(); // true: has no scheme
qDebug() << QDir::isAbsolutePath(url.path()); // true: absolute pathEine relative URL kann aufgelöst werden, indem sie als Argument an die Funktion ` resolved()` übergeben wird, die eine absolute URL zurückgibt. Die Funktion ` isParentOf()` dient dazu, festzustellen, ob eine URL die übergeordnete URL einer anderen ist.
Fehlerprüfung
QUrl ist in der Lage, viele Fehler in URLs beim Parsen oder beim Setzen von URL-Komponenten mit einzelnen Setter-Methoden (wie setScheme(), setHost() oder setPath()) zu erkennen. Ist das Parsen oder die Setter-Funktion erfolgreich, werden zuvor erfasste Fehlerzustände verworfen.
Standardmäßig arbeiten die Setter-Methoden von QUrl im Modus „ QUrl::TolerantMode “, was bedeutet, dass sie einige häufige Fehler und fehlerhafte Darstellungen von Daten akzeptieren. Eine alternative Parsing-Methode ist „ QUrl::StrictMode “, die weitere Prüfungen durchführt. Eine Beschreibung der Unterschiede zwischen den Parsing-Modi finden Sie unter QUrl::ParsingMode.
QUrl prüft lediglich die Konformität mit der URL-Spezifikation. Es wird nicht versucht zu überprüfen, ob URLs auf Protokoll-Ebene das Format aufweisen, das von Handlern an anderer Stelle erwartet wird. Beispielsweise werden die folgenden URIs von QUrl alle als gültig angesehen, auch wenn sie bei der Verwendung keinen Sinn ergeben:
- „http:/filename.html“
- "mailto://example.com"
Wenn der Parser auf einen Fehler stößt, signalisiert er das Ereignis, indem er „ isValid()“ den Wert „false“ zurückgeben lässt und „ toString()“ bzw. „ toEncoded()“ eine leere Zeichenkette zurückgeben lässt. Falls es notwendig ist, dem Benutzer den Grund für das Scheitern der URL-Analyse anzuzeigen, kann der Fehlerzustand von QUrl durch Aufruf von „ errorString()“ abgerufen werden. Beachten Sie, dass diese Meldung sehr technisch ist und für Endbenutzer möglicherweise keinen Sinn ergibt.
QUrl kann nur einen Fehlerzustand protokollieren. Werden mehrere Fehler festgestellt, ist es nicht definiert, welcher Fehler gemeldet wird.
Zeichenkonvertierungen
Befolgen Sie diese Regeln, um fehlerhafte Zeichenkonvertierungen beim Umgang mit URLs und Zeichenketten zu vermeiden:
- Verwenden Sie beim Erstellen eines ` QString `, der eine URL aus einem ` QByteArray ` oder einem `char*` enthalten soll, immer ` QString::fromUtf8()`.
Sicherheitshinweise
Behandeln Sie URLs aus einer nicht vertrauenswürdigen Quelle (dem Netzwerk, einer Datei oder einem Dokument, einer anderen Anwendung oder vom Benutzer) als böswillige Eingabe.
- Validieren Sie die geparste URL, niemals die Rohzeichenfolge. Führen Sie alle Zulassungs-/Sperrlisten-, Herkunfts- oder Weiterleitungsprüfungen auf den von QUrl extrahierten Komponenten durch – für eine Host-Prüfung verwenden Sie
url.host(QUrl::FullyEncoded)– nicht auf dem Originaltext. QUrl normalisiert Formen, die bei einer String-Prüfung übersehen werden:http://0x7f.0.0.1undhttp://2130706433ergeben beide den Host127.0.0.1, undhttp://good.com\\@evil.com/ergibt den Hostevil.com. Verwenden SieFullyEncodedanstelle der standardmäßig dekodierten Form, damit internationalisierte (IDN) Hosts in ihrer ASCII-Form verglichen werden und nicht mit ähnlich aussehenden Unicode-Zeichen gefälscht werden können. - Verwenden Sie für die Prüfung und für die Anfrage dieselbe geparste URL. Wenn Sie die ursprüngliche Zeichenkette anschließend an einen anderen Parser übergeben, entsteht erneut die Diskrepanz, die durch die Prüfung beseitigt wurde.
- Seien Sie besonders vorsichtig, wenn Sie „ FullyDecoded “ zum Abrufen von Komponenten verwenden. Das Ergebnis kann verlustbehaftet sein oder sogar eine andere Bedeutung haben, je nach der abgerufenen Komponente. Es kann auch Steuerzeichen enthalten, darunter „
NUL“. Weitere Details finden Sie unter Full decoding.
Dokumentation zu Mitgliedstypen
[since 6.3] enum QUrl::AceProcessingOption
flags QUrl::AceProcessingOptions
Die ACE-Verarbeitungsoptionen steuern, wie URLs in die ASCII-kompatible Kodierung umgewandelt und wieder zurückkonvertiert werden.
| Konstante | Wert | Beschreibung |
|---|---|---|
QUrl::IgnoreIDNWhitelist | 0x1 | Die IDN-Whitelist bei der Konvertierung von URLs in Unicode ignorieren. |
QUrl::AceTransitionalProcessing | 0x2 | Verwenden Sie die in UTS #46 beschriebene Übergangsverarbeitung. Dies ermöglicht eine bessere Kompatibilität mit der IDNA-2003-Spezifikation. |
Standardmäßig wird die nicht-transitionale Verarbeitung verwendet und Nicht-ASCII-Zeichen sind nur in URLs zulässig, deren Top-Level-Domains in der IDN-Whitelist aufgeführt sind.
Diese Enumeration wurde in Qt 6.3 eingeführt.
Der Typ `AceProcessingOptions` ist ein `typedef` für ` QFlags<AceProcessingOption>`. Er speichert eine ODER-Kombination von `AceProcessingOption`-Werten.
Siehe auch toAce(), fromAce() und idnWhitelist().
enum QUrl::ComponentFormattingOption
flags QUrl::ComponentFormattingOptions
Die Formatierungsoptionen für Komponenten legen fest, wie die Komponenten einer URL formatiert werden, wenn sie als Text ausgegeben werden. Sie können mit den Optionen aus „ QUrl::FormattingOptions “ kombiniert werden, wenn sie in „ toString()“ und „ toEncoded()“ verwendet werden.
| Konstante | Wert | Beschreibung |
|---|---|---|
QUrl::PrettyDecoded | 0x000000 | Die Komponente wird in einer „aufbereiteten Form“ zurückgegeben, wobei die meisten prozentkodierten Zeichen dekodiert werden. Das genaue Verhalten von PrettyDecoded variiert von Komponente zu Komponente und kann sich zudem von Qt-Version zu Qt-Version ändern. Dies ist die Standardeinstellung. |
QUrl::EncodeSpaces | 0x100000 | Lässt Leerzeichen in ihrer kodierten Form („%20“) erhalten. |
QUrl::EncodeUnicode | 0x200000 | Nicht-US-ASCII-Zeichen bleiben in ihrer UTF-8-Prozent-kodierten Form erhalten (z. B. „%C3%A9“ für den Codepunkt U+00E9, LATIN SMALL LETTER E WITH ACUTE). |
QUrl::EncodeDelimiters | 0x400000 | 0x800000 | Bestimmte Trennzeichen in ihrer kodierten Form belassen, so wie sie in der URL erscheinen würden, wenn die vollständige URL als Text dargestellt wird. Welche Trennzeichen von dieser Option betroffen sind, variiert von Komponente zu Komponente. Dieses Flag hat keine Auswirkung auf toString() oder toEncoded(). |
QUrl::EncodeReserved | 0x1000000 | Behalten Sie US-ASCII-Zeichen, die gemäß der Spezifikation in der URL nicht zulässig sind, in ihrer kodierten Form bei. Dies ist die Standardeinstellung bei toString() und toEncoded(). |
QUrl::DecodeReserved | 0x2000000 | Dekodieren Sie die US-ASCII-Zeichen, deren Verwendung in der URL gemäß der Spezifikation nicht zulässig ist. Dies ist die Standardeinstellung bei den Getter-Methoden einzelner Komponenten. |
QUrl::FullyEncoded | EncodeSpaces | EncodeUnicode | EncodeDelimiters | EncodeReserved | Behalte alle Zeichen in ihrer korrekt kodierten Form bei, so wie diese Komponente als Teil einer URL erscheinen würde. Bei Verwendung mit toString() ergibt dies eine vollständig konforme URL im Format QString, die exakt dem Ergebnis von toEncoded() entspricht |
QUrl::FullyDecoded | FullyEncoded | DecodeReserved | 0x4000000 | Versuchen Sie, so viel wie möglich zu dekodieren. Für einzelne Komponenten der URL werden dabei alle Prozent-Kodierungssequenzen dekodiert, einschließlich Steuerzeichen (U+0000 bis U+001F) und UTF-8-Sequenzen, die in Prozent-kodierter Form vorliegen. Die Verwendung dieses Modus kann zu Datenverlust führen; weitere Informationen finden Sie weiter unten. |
Die Werte „EncodeReserved“ und „DecodeReserved“ sollten nicht gemeinsam in einem Aufruf verwendet werden. In diesem Fall ist das Verhalten undefiniert. Sie werden als separate Werte bereitgestellt, da sich das Verhalten des „Pretty-Modus“ in Bezug auf reservierte Zeichen bei bestimmten Komponenten und insbesondere bei der vollständigen URL unterscheidet.
Vollständige Dekodierung
Der „FullyDecoded“-Modus ähnelt dem Verhalten der Funktionen, die in Qt 4.x „ QString “ zurückgeben, da jedes Zeichen für sich selbst steht und niemals eine besondere Bedeutung hat. Dies gilt sogar für das Prozentzeichen („%“), das als literales Prozentzeichen interpretiert werden sollte und nicht als Beginn einer prozentkodierten Sequenz. Dasselbe tatsächliche Zeichen wird in allen anderen Dekodierungsmodi durch die Folge „%25“ dargestellt.
Wann immer mit QUrl::FullyDecoded gewonnene Daten erneut in eine ` QUrl` übernommen werden, muss darauf geachtet werden, den Parameter ` QUrl::DecodedMode ` bei den Settern (wie ` setPath()` und ` setUserName()`) zu verwenden. Andernfalls kann es dazu kommen, dass das Prozentzeichen („%“) fälschlicherweise als Beginn einer prozentkodierten Sequenz interpretiert wird.
Dieser Modus ist sehr nützlich, wenn Teile einer URL in einem Nicht-URL-Kontext verwendet werden. Um beispielsweise den Benutzernamen, das Passwort oder Dateipfade in einer FTP-Client-Anwendung zu extrahieren, sollte der FullyDecoded-Modus verwendet werden.
Dieser Modus sollte mit Vorsicht verwendet werden, da es zwei Bedingungen gibt, die im zurückgegebenen ` QString` nicht zuverlässig dargestellt werden können. Diese sind:
- Nicht-UTF-8-Sequenzen: URLs können Sequenzen von prozentkodierten Zeichen enthalten, die keine gültigen UTF-8-Sequenzen bilden. Da URLs mit UTF-8 dekodiert werden müssen, führt jeder Fehler bei der Dekodierung dazu, dass der „ QString “ an der Stelle, an der die Sequenz stand, ein oder mehrere Ersatzzeichen enthält.
- Kodierte Trennzeichen: URLs dürfen zudem zwischen einem Trennzeichen in seiner literalen Form und seinem Äquivalent in prozentkodierter Form unterscheiden. Dies tritt am häufigsten im Abfrageparameter auf, ist jedoch in den meisten Teilen der URL zulässig.
Das folgende Beispiel veranschaulicht das Problem:
QUrl original("http://example.com/?q=a%2B%3Db%26c");
QUrl copy(original);
copy.setQuery(copy.query(QUrl::FullyDecoded), QUrl::DecodedMode);
qDebug() << original.toString(); // prints: http://example.com/?q=a%2B%3Db%26c
qDebug() << copy.toString(); // prints: http://example.com/?q=a+=b&cWürden die beiden URLs über HTTP-GET verwendet, würde der Webserver sie wahrscheinlich anders interpretieren. Im ersten Fall würde er sie als einen Parameter mit dem Schlüssel „q“ und dem Wert „a+=b&c“ interpretieren. Im zweiten Fall würde er sie wahrscheinlich als zwei Parameter interpretieren: einen mit dem Schlüssel „q“ und dem Wert „a = b“ sowie einen zweiten mit dem Schlüssel „c“ und ohne Wert.
Der Typ `ComponentFormattingOptions` ist ein `typedef` für ` QFlags<ComponentFormattingOption>`. Er speichert eine ODER-Kombination von `ComponentFormattingOption`-Werten.
Siehe auch QUrl::FormattingOptions.
enum QUrl::ParsingMode
Der Parsing-Modus bestimmt, wie QUrl Zeichenfolgen analysiert.
| Konstante | Wert | Beschreibung |
|---|---|---|
QUrl::TolerantMode | 0 | QUrl versucht, einige häufige Fehler in URLs zu korrigieren. Dieser Modus ist nützlich für das Parsen von URLs aus Quellen, von denen nicht bekannt ist, ob sie streng standardkonform sind. |
QUrl::StrictMode | 1 | Es werden nur gültige URLs akzeptiert. Dieser Modus eignet sich für die allgemeine URL-Validierung. |
QUrl::DecodedMode | 2 | QUrl Interpretiert die URL-Komponente in vollständig dekodierter Form, wobei Prozentzeichen für sich selbst stehen und nicht als Beginn einer prozentkodierten Sequenz. Dieser Modus gilt nur für Setter, die Komponenten einer URL festlegen; er ist nicht zulässig im Konstruktor „ QUrl “, in „ fromEncoded()“ oder in „ setUrl()“. Weitere Informationen zu diesem Modus finden Sie in der Dokumentation zu „ QUrl::FullyDecoded “. |
Im „TolerantMode“ verhält sich der Parser wie folgt:
- Leerzeichen und „%20“: Nicht kodierte Leerzeichen werden akzeptiert und als Äquivalent zu „%20“ behandelt.
- Einzelne „%“-Zeichen: Wenn auf ein Prozentzeichen „%“ nicht zwei hexadezimale Zeichen folgen (z. B. „13% coverage.html“), geht der Parser davon aus, dass die Eingabe nicht kodiert wurde, und ersetzt alle „%“-Zeichen durch „%25“.
- Reservierte und nicht reservierte Zeichen: Eine kodierte URL sollte nur wenige Zeichen als Literale enthalten; alle anderen Zeichen sollten prozentkodiert sein. Im TolerantMode werden diese Zeichen akzeptiert, wenn sie in der URL vorkommen: Leerzeichen / doppeltes Anführungszeichen / „<“ / „>“ / „“ / „^“ / „`“ / „{“ / „|“ / „}“ Dieselben Zeichen können wieder dekodiert werden, indem ` QUrl::DecodeReserved ` an ` toString()` oder ` toEncoded()` übergeben wird. In den Getter-Methoden einzelner Komponenten werden diese Zeichen oft in dekodierter Form zurückgegeben.
Wird im StrictMode ein Parsing-Fehler festgestellt, gibt ` isValid()` ` false ` zurück, und ` errorString()` gibt eine Meldung zurück, die den Fehler beschreibt. Werden mehrere Fehler erkannt, ist es undefiniert, welcher Fehler gemeldet wird.
Beachten Sie, dass der „TolerantMode“ in der Regel nicht ausreicht, um Benutzereingaben zu parsen, da diese oft mehr Fehler und Erwartungen enthalten, als der Parser bewältigen kann. Bei der Verarbeitung von Daten, die direkt vom Benutzer stammen – im Gegensatz zu Daten aus Datenübertragungsquellen wie anderen Programmen –, wird empfohlen, ` fromUserInput()` zu verwenden.
Siehe auch fromUserInput(), setUrl(), toString(), toEncoded() und QUrl::FormattingOptions.
enum QUrl::UrlFormattingOption
flags QUrl::FormattingOptions
Die Formatierungsoptionen legen fest, wie die URL formatiert wird, wenn sie als Text ausgegeben wird.
| Konstante | Wert | Beschreibung |
|---|---|---|
QUrl::None | 0x0 | Das Format der URL bleibt unverändert. |
QUrl::RemoveScheme | 0x1 | Das Schema wird aus der URL entfernt. |
QUrl::RemovePassword | 0x2 | Etwaige Passwörter in der URL werden entfernt. |
QUrl::RemoveUserInfo | RemovePassword | 0x4 | Alle Benutzerinformationen in der URL werden entfernt. |
QUrl::RemovePort | 0x8 | Alle angegebenen Ports werden aus der URL entfernt. |
QUrl::RemoveAuthority | RemoveUserInfo | RemovePort | 0x10 | Entfernen Sie Benutzername, Passwort, Host und Port. |
QUrl::RemovePath | 0x20 | Der Pfad der URL wird entfernt, sodass nur das Schema, die Host-Adresse und der Port (falls vorhanden) übrig bleiben. |
QUrl::RemoveQuery | 0x40 | Der Abfrageteil der URL (nach dem Zeichen „?“) wird entfernt. |
QUrl::RemoveFragment | 0x80 | Der Fragmentteil der URL (einschließlich des Zeichens „#“) wird entfernt. |
QUrl::RemoveFilename | 0x800 | Der Dateiname (d. h. alles nach dem letzten „/“ im Pfad) wird entfernt. Das abschließende „/“ bleibt erhalten, sofern „StripTrailingSlash“ nicht gesetzt ist. Gilt nur, wenn „RemovePath“ nicht gesetzt ist. |
QUrl::PreferLocalFile | 0x200 | Wenn es sich bei der URL gemäß isLocalFile() um eine lokale Datei handelt und sie weder Abfrage noch Fragment enthält, wird ein lokaler Dateipfad zurückgegeben. |
QUrl::StripTrailingSlash | 0x400 | Der abschließende Schrägstrich wird aus dem Pfad entfernt, sofern vorhanden. |
QUrl::NormalizePathSegments | 0x1000 | Passen den Pfad an, um überflüssige Verzeichnistrennzeichen zu entfernen und „.“ sowie „..“ (soweit möglich) aufzulösen. Bei nicht-lokalen Pfaden bleiben benachbarte Schrägstriche erhalten. |
Beachten Sie, dass die Groß-/Kleinschreibungsregeln in Nameprep, denen QUrl entspricht, vorschreiben, dass Hostnamen unabhängig von den verwendeten Qt::FormattingOptions stets in Kleinbuchstaben umgewandelt werden müssen.
Die Optionen aus ` QUrl::ComponentFormattingOptions ` sind ebenfalls möglich.
Der Typ `FormattingOptions` ist ein `typedef` für ` QFlags<UrlFormattingOption>`. Er speichert eine ODER-Kombination von `UrlFormattingOption`-Werten.
Siehe auch QUrl::ComponentFormattingOptions.
enum QUrl::UserInputResolutionOption
flags QUrl::UserInputResolutionOptions
Die Optionen zur Auflösung von Benutzereingaben legen fest, wie die Funktion „ fromUserInput()“ Zeichenfolgen interpretieren soll, die entweder einen relativen Pfad oder die Kurzform einer HTTP-URL darstellen können. So kann beispielsweise „ file.pl “ entweder eine lokale Datei oder die URL „ http://file.pl “ sein.
| Konstante | Wert | Beschreibung |
|---|---|---|
QUrl::DefaultResolution | 0 | Der Standardauflösungsmechanismus besteht darin, zu prüfen, ob eine lokale Datei in dem an ` fromUserInput` übergebenen Arbeitsverzeichnis vorhanden ist, und nur in diesem Fall einen lokalen Pfad zurückzugeben. Andernfalls wird von einer URL ausgegangen. |
QUrl::AssumeLocalFile | 1 | Diese Option bewirkt, dass ` fromUserInput()` immer einen lokalen Pfad zurückgibt, es sei denn, die Eingabe enthält ein Schema wie beispielsweise ` http://file.pl`. Dies ist nützlich für Anwendungen wie Texteditoren, die die Datei erstellen können, falls sie nicht existiert. |
Der Typ `UserInputResolutionOptions` ist ein `typedef` für ` QFlags<UserInputResolutionOption>`. Er speichert eine ODER-Kombination von `UserInputResolutionOption`-Werten.
Siehe auch „ fromUserInput()“.
Dokumentation zu den Mitgliedsfunktionen
QUrl::QUrl()
Erstellt ein leeres QUrl-Objekt.
QUrl::QUrl(const QString &url, QUrl::ParsingMode parsingMode = TolerantMode)
Erstellt eine URL durch Parsen von url. Beachten Sie, dass dieser Konstruktor eine korrekte URL oder URL-Referenz erwartet und nicht versucht, die Absicht zu erraten. Beispielsweise ergibt die folgende Deklaration:
QUrl url("example.com");Erzeugt zwar eine gültige URL, entspricht aber möglicherweise nicht den Erwartungen, da der Teil „ scheme()“ in der Eingabe fehlt. Für eine Zeichenfolge wie die oben genannte sollten Anwendungen möglicherweise „ fromUserInput()“ verwenden. Für diesen Konstruktor oder „ setUrl()“ war wahrscheinlich Folgendes beabsichtigt:
QUrl url("https://example.com");QUrl führt automatisch eine Prozentkodierung aller Zeichen durch, die in einer URL nicht zulässig sind, und dekodiert die prozentkodierten Sequenzen, die ein nicht reserviertes Zeichen darstellen (Buchstaben, Ziffern, Bindestriche, Unterstriche, Punkte und Tilden). Alle anderen Zeichen bleiben in ihrer ursprünglichen Form erhalten.
Analysiert die URL „ url “ im Parser-Modus „ parsingMode “. Im Modus „ TolerantMode “ (Standard) korrigiert QUrl bestimmte Fehler, insbesondere das Vorhandensein eines Prozentzeichens („%“), dem keine zwei Hexadezimalziffern folgen, und akzeptiert jedes Zeichen an jeder Position. Im Modus „ StrictMode “ werden Kodierungsfehler nicht toleriert, und QUrl prüft zudem, ob bestimmte verbotene Zeichen in unkodierter Form vorhanden sind. Wird im Modus „ StrictMode “ ein Fehler festgestellt, gibt „ isValid()“ den Wert „false“ zurück. Der Parsing-Modus „ DecodedMode “ ist in diesem Kontext nicht zulässig.
Beispiel:
QUrl url("http://www.example.com/List of holidays.xml");
// url.toEncoded() == "http://www.example.com/List%20of%20holidays.xml"Um eine URL aus einer kodierten Zeichenkette zu erstellen, können Sie auch ` fromEncoded()` verwenden:
Beide Funktionen sind gleichwertig und akzeptieren in Qt 5 kodierte Daten. In der Regel hängt die Wahl zwischen dem QUrl-Konstruktor oder ` setUrl()` einerseits und ` fromEncoded()` andererseits von den Quelldaten ab: Der Konstruktor und ` setUrl()` nehmen eine ` QString` entgegen, während ` fromEncoded ` eine ` QByteArray` erwartet.
Siehe auch setUrl(), fromEncoded() und TolerantMode.
[noexcept] QUrl::QUrl(const QUrl &other)
Erstellt eine Kopie von „ other “.
[noexcept] QUrl::QUrl(QUrl &&other)
Erstellt eine QUrl-Instanz, sodass diese auf dasselbe Objekt verweist, auf das zuvor other verwiesen hat.
[noexcept] QUrl::~QUrl()
Destruktor; wird unmittelbar vor dem Löschen des Objekts aufgerufen.
QUrl QUrl::adjusted(QUrl::FormattingOptions options) const
Gibt eine angepasste Version der URL zurück. Die Ausgabe kann durch die Übergabe von Flags mit options angepasst werden.
Die Kodierungsoptionen aus „ QUrl::ComponentFormattingOption “ sind für diese Methode nicht besonders sinnvoll, ebenso wenig wie „ QUrl::PreferLocalFile “.
Dies entspricht immer QUrl(url.toString(options)).
Siehe auch FormattingOptions, toEncoded() und toString().
QString QUrl::authority(QUrl::ComponentFormattingOptions options = PrettyDecoded) const
Gibt die Autorität der URL zurück, sofern diese definiert ist; andernfalls wird eine leere Zeichenkette zurückgegeben.
Diese Funktion gibt einen eindeutigen Wert zurück, der möglicherweise noch prozentkodierte Zeichen sowie einige Steuerzeichenfolgen enthält, die in „ QString “ nicht in dekodierter Form dargestellt werden können.
Das Argument „ options “ steuert die Formatierung der Benutzerinformationskomponente. Der Wert „ QUrl::FullyDecoded “ ist in dieser Funktion nicht zulässig. Wenn Sie vollständig dekodierte Daten benötigen, rufen Sie die Funktionen „ userName()“, „ password()“, „ host()“ und „ port()“ einzeln auf.
Siehe auch setAuthority(), userInfo(), userName(), password(), host() und port().
void QUrl::clear()
Setzt den Inhalt des „ QUrl “ zurück. Nach dem Aufruf dieser Funktion entspricht der „ QUrl “ einem Objekt, das mit dem standardmäßigen leeren Konstruktor erstellt wurde.
Siehe auch ` isEmpty()`.
QString QUrl::errorString() const
Gibt eine Fehlermeldung zurück, wenn bei der letzten Operation, die dieses QUrl -Objekt geändert hat, ein Parsing-Fehler aufgetreten ist. Wurde kein Fehler festgestellt, gibt diese Funktion eine leere Zeichenkette zurück, und isValid() gibt „ true “ zurück.
Die von dieser Funktion zurückgegebene Fehlermeldung ist technischer Natur und wird von Endbenutzern möglicherweise nicht verstanden. Sie ist vor allem für Entwickler nützlich, die versuchen zu verstehen, warum „ QUrl “ bestimmte Eingaben nicht akzeptiert.
Siehe auch QUrl::ParsingMode.
QString QUrl::fileName(QUrl::ComponentFormattingOptions options = FullyDecoded) const
Gibt den Namen der Datei ohne den Verzeichnispfad zurück.
Beachten Sie, dass der Dateiname als leer gilt, wenn diesem „ QUrl “-Objekt ein Pfad übergeben wird, der mit einem Schrägstrich endet.
Enthält der Pfad keinen Schrägstrich, wird er vollständig als fileName zurückgegeben.
Beispiel:
QUrl url("http://qt-project.org/support/file.html");
// url.adjusted(RemoveFilename) == "http://qt-project.org/support/"
// url.fileName() == "file.html"Das Argument „ options “ steuert die Formatierung der Dateinamenskomponente. Alle Werte liefern ein eindeutiges Ergebnis. Bei der Einstellung „ QUrl::FullyDecoded “ werden alle prozentkodierten Sequenzen dekodiert; andernfalls kann der zurückgegebene Wert einige prozentkodierte Sequenzen für bestimmte Steuerzeichen enthalten, die in „ QString “ nicht in dekodierter Form darstellbar sind.
Siehe auch path().
QString QUrl::fragment(QUrl::ComponentFormattingOptions options = PrettyDecoded) const
Gibt das Fragment der URL zurück. Um festzustellen, ob die geparste URL ein Fragment enthielt, verwenden Sie hasFragment().
Das Argument ` options ` steuert die Formatierung der Fragmentkomponente. Alle Werte liefern ein eindeutiges Ergebnis. Bei ` QUrl::FullyDecoded` werden alle prozentkodierten Sequenzen dekodiert; andernfalls kann der zurückgegebene Wert einige prozentkodierte Sequenzen für bestimmte Steuerzeichen enthalten, die in ` QString` nicht in dekodierter Form darstellbar sind.
Beachten Sie, dass „ QUrl::FullyDecoded “ zu Datenverlusten führen kann, wenn solche nicht darstellbaren Sequenzen vorhanden sind. Es wird empfohlen, diesen Wert zu verwenden, wenn das Ergebnis in einem Nicht-URL-Kontext verwendet wird.
Siehe auch setFragment() und hasFragment().
[static, since 6.3] QString QUrl::fromAce(const QByteArray &domain, QUrl::AceProcessingOptions options = {})
Gibt die Unicode-Form des angegebenen Domainnamens domain zurück, der in der ASCII-kompatiblen Kodierung (ACE) kodiert ist. Die Ausgabe kann durch die Übergabe von Flags an options angepasst werden. Das Ergebnis dieser Funktion gilt als äquivalent zu domain.
Wenn der Wert in domain nicht kodiert werden kann, wird er in QString konvertiert und zurückgegeben.
Die ASCII-kompatible Kodierung (ACE) ist in den RFCs 3490, 3491 und 3492 definiert und wurde durch den Unicode Technical Standard Nr. 46 aktualisiert. Sie ist Teil der IDNA-Spezifikation (Internationalizing Domain Names in Applications), die es ermöglicht, Domainnamen (wie "example.com") unter Verwendung von Nicht-US-ASCII-Zeichen zu schreiben.
Diese Funktion wurde in Qt 6.3 eingeführt.
[static] QUrl QUrl::fromCFURL(CFURLRef url)
Erstellt ein ` QUrl `-Objekt, das eine Kopie der CFURL url enthält.
[static] QUrl QUrl::fromEncoded(QByteArrayView input, QUrl::ParsingMode mode = TolerantMode)
Analysiert input und gibt die entsprechende QUrl zurück. Es wird davon ausgegangen, dass input in kodierter Form vorliegt und ausschließlich ASCII-Zeichen enthält.
Analysiert die URL unter Verwendung von mode. Weitere Informationen zu diesem Parameter finden Sie unter setUrl(). QUrl::DecodedMode ist in diesem Zusammenhang nicht zulässig.
Hinweis: In Qt-Versionen vor 6.7 nahm diese Funktion einen ` QByteArray` entgegen, nicht einen ` QByteArrayView`. Wenn Kompilierungsfehler auftreten, liegt dies daran, dass Ihr Code Objekte übergibt, die implizit in ` QByteArray` konvertierbar sind, nicht jedoch in ` QByteArrayView`. Umschließen Sie das entsprechende Argument mit ` QByteArray{~~~} `, um den Typumwandlung explizit zu machen. Dies ist abwärtskompatibel mit älteren Qt-Versionen.
Siehe auch toEncoded() und setUrl().
[static] QUrl QUrl::fromLocalFile(const QString &localFile)
Gibt eine „ QUrl “-Darstellung von „ localFile “ zurück, die als lokale Datei interpretiert wird. Diese Funktion akzeptiert sowohl durch Schrägstriche getrennte Pfade als auch das plattformspezifische Trennzeichen.
Diese Funktion akzeptiert auch Pfade mit einem doppelten führenden Schrägstrich (oder Backslash), um eine Remote-Datei anzugeben, wie beispielsweise in „//servername/path/to/file.txt“. Beachten Sie, dass nur bestimmte Plattformen diese Datei tatsächlich mit ` QFile::open()` öffnen können.
Ein leerer ` localFile ` führt zu einer leeren URL (seit Qt 5.4).
qDebug() << QUrl::fromLocalFile("file.txt"); // QUrl("file:file.txt")
qDebug() << QUrl::fromLocalFile("/home/user/file.txt"); // QUrl("file:///home/user/file.txt")
qDebug() << QUrl::fromLocalFile("file:file.txt"); // doesn't make sense; expects path, not url with schemeIn der ersten Zeile des obigen Codeausschnitts wird eine Datei-URL aus einem lokalen, relativen Pfad gebildet. Eine Datei-URL mit einem relativen Pfad ist nur dann sinnvoll, wenn es eine Basis-URL gibt, anhand derer sie aufgelöst werden kann. Zum Beispiel:
QUrl url = QUrl::fromLocalFile("file.txt");
QUrl baseUrl = QUrl("file:/home/user/");
// falsch: gibt QUrl("file:file.txt") aus, da „url“ bereits ein Schema enthält
qDebug() << baseUrl.resolved(url);Um eine solche URL aufzulösen, muss zuvor das Schema entfernt werden:
// richtig: gibt QUrl("file:///home/user/file.txt") aus
url.setScheme(QString());
qDebug() << baseUrl.resolved(url);Aus diesem Grund ist es besser, für relative Dateipfade eine relative URL (d. h. ohne Schema) zu verwenden:
QUrl url = QUrl("file.txt");
QUrl baseUrl = QUrl("file:/home/user/");
// gibt QUrl("file:///home/user/file.txt") aus
qDebug() << baseUrl.resolved(url);Siehe auch toLocalFile(), isLocalFile() und QDir::toNativeSeparators().
[static] QUrl QUrl::fromNSURL(const NSURL *url)
Erstellt ein ` QUrl `-Objekt, das eine Kopie des NSURL-Objekts ` url` enthält.
[static] QString QUrl::fromPercentEncoding(const QByteArray &input)
Gibt eine dekodierte Kopie von input zurück. input wird zunächst aus der Prozent-Kodierung dekodiert und anschließend von UTF-8 in Unicode konvertiert.
Hinweis: Bei ungültiger Eingabe (z. B. einer Zeichenkette, die die Folge „%G5“ enthält, die keine gültige Hexadezimalzahl ist) ist auch die Ausgabe ungültig. Beispiel: Die Folge „%G5“ könnte zu „W“ dekodiert werden.
[static] QList<QUrl> QUrl::fromStringList(const QStringList &urls, QUrl::ParsingMode mode = TolerantMode)
Wandelt eine Liste von Zeichenketten, die „ urls “ darstellen, mithilfe von „ QUrl “ (str, mode) in eine Liste von URLs um. Beachten Sie, dass dies bedeutet, dass alle Zeichenketten URLs sein müssen und beispielsweise keine lokalen Pfade.
[static] QUrl QUrl::fromUserInput(const QString &userInput, const QString &workingDirectory = QString(), QUrl::UserInputResolutionOptions options = DefaultResolution)
Gibt eine gültige URL aus einer vom Benutzer angegebenen Zeichenkette „ userInput “ zurück, sofern sich daraus eine ableiten lässt. Ist dies nicht möglich, wird ein ungültiger Wert „ QUrl()“ zurückgegeben.
Dadurch kann der Benutzer eine URL oder einen lokalen Dateipfad in Form einer einfachen Zeichenkette eingeben. Diese Zeichenkette kann manuell in die Adressleiste eingegeben, aus der Zwischenablage übernommen oder über Befehlszeilenargumente übergeben werden.
Wenn die Zeichenkette noch keine gültige URL ist, wird unter verschiedenen Annahmen eine bestmögliche Schätzung vorgenommen.
Entspricht die Zeichenkette einem gültigen Dateipfad auf dem System, wird mithilfe von QUrl::fromLocalFile() eine file://-URL erstellt.
Ist dies nicht der Fall, wird versucht, die Zeichenkette in eine „http://“- oder „ftp://“-URL umzuwandeln. Letzteres gilt, wenn die Zeichenkette mit „ftp“ beginnt. Das Ergebnis wird anschließend durch den toleranten Parser von ` QUrl` geleitet, und im Erfolgsfall wird eine gültige „ QUrl “-URL zurückgegeben, andernfalls ein ` QUrl`().
Beispiele:
- qt-project.org wird zu http://qt-project.org
- ftp.qt-project.org wird zu ftp://ftp.qt-project.org
- hostname wird zu http://hostname
- /home/user/test.html wird zu file:///home/user/test.html
Um relative Pfade verarbeiten zu können, akzeptiert diese Methode einen optionalen Pfad namens „ workingDirectory “. Dies ist besonders nützlich bei der Verarbeitung von Befehlszeilenargumenten. Ist „ workingDirectory “ leer, werden relative Pfade nicht verarbeitet.
Standardmäßig wird eine Eingabezeichenfolge, die wie ein relativer Pfad aussieht, nur dann als solcher behandelt, wenn die Datei tatsächlich im angegebenen Arbeitsverzeichnis existiert. Wenn die Anwendung mit noch nicht existierenden Dateien umgehen kann, sollte sie das Flag „ AssumeLocalFile “ in „ options “ übergeben.
bool QUrl::hasFragment() const
Gibt „ true “ zurück, wenn diese URL ein Fragment enthält (d. h., wenn darin ein „#“ vorkommt).
Siehe auch fragment() und setFragment().
bool QUrl::hasQuery() const
Gibt „ true “ zurück, wenn diese URL eine Abfrage enthält (d. h., wenn darin ein „?“ vorkommt).
Siehe auch setQuery(), query() und hasFragment().
QString QUrl::host(QUrl::ComponentFormattingOptions options = FullyDecoded) const
Gibt den Host der URL zurück, sofern dieser definiert ist; andernfalls wird eine leere Zeichenkette zurückgegeben.
Das Argument ` options ` steuert, wie der Hostname formatiert wird. Die Option „ QUrl::EncodeUnicode “ bewirkt, dass diese Funktion den Hostnamen im ACE-Format (ASCII-Compatible Encoding) zurückgibt, das für die Verwendung in Kanälen geeignet ist, die nicht 8-Bit-kompatibel sind oder den Legacy-Hostnamen erfordern (z. B. bei DNS-Anfragen oder in HTTP-Anfrage-Headern). Ist dieses Flag nicht vorhanden, gibt diese Funktion den internationalen Domänennamen (IDN) im Unicode-Format zurück, gemäß der Liste der zulässigen Top-Level-Domänen (siehe idnWhitelist()).
Alle anderen Flags werden ignoriert. Hostnamen dürfen keine Steuerzeichen oder Prozentzeichen enthalten, sodass der zurückgegebene Wert als vollständig dekodiert betrachtet werden kann.
Siehe auch setHost(), idnWhitelist(), setIdnWhitelist() und authority().
[static] QStringList QUrl::idnWhitelist()
Gibt die aktuelle Whitelist der Top-Level-Domains zurück, deren Namen Nicht-ASCII-Zeichen enthalten dürfen.
Die Gründe für diese Liste finden Sie unter setIdnWhitelist().
Siehe auch setIdnWhitelist() und AceProcessingOption.
bool QUrl::isEmpty() const
Gibt „ true “ zurück, wenn die URL keine Daten enthält; andernfalls wird „ false “ zurückgegeben.
Siehe auch clear().
bool QUrl::isLocalFile() const
Gibt „ true “ zurück, wenn diese URL auf einen lokalen Dateipfad verweist. Eine URL ist ein lokaler Dateipfad, wenn das Schema „file“ lautet.
Beachten Sie, dass diese Funktion URLs mit Hostnamen als lokale Dateipfade betrachtet, auch wenn der resultierende Dateipfad nicht mit QFile::open() geöffnet werden kann.
Siehe auch fromLocalFile() und toLocalFile().
bool QUrl::isParentOf(const QUrl &childUrl) const
Gibt „ true “ zurück, wenn diese URL eine übergeordnete URL von „ childUrl “ ist. „ childUrl “ ist eine untergeordnete URL dieser URL, wenn beide URLs dasselbe Schema und dieselbe Autorität haben und der Pfad dieser URL eine übergeordnete Ebene des Pfads von „ childUrl “ darstellt.
bool QUrl::isRelative() const
Gibt „ true “ zurück, wenn die URL relativ ist; andernfalls wird „ false “ zurückgegeben. Eine URL ist eine relative Referenz, wenn ihr Schema nicht definiert ist; diese Funktion entspricht daher dem Aufruf von „ scheme()“. „isEmpty()“.
Relative Referenzen sind in RFC 3986, Abschnitt 4.2, definiert.
Siehe auch Relative URLs vs Relative Paths.
bool QUrl::isValid() const
Gibt „ true “ zurück, wenn die URL nicht leer und gültig ist; andernfalls wird „ false “ zurückgegeben.
Die URL wird einer Konformitätsprüfung unterzogen. Jeder Teil der URL muss den Standard-Kodierungsregeln des URI-Standards entsprechen, damit die URL als gültig gemeldet wird.
bool checkUrl(const QUrl&url) {
if (!url.isValid()) {
qDebug("Invalid URL: %s", qUtf8Printable(url.toString()));
return false;
}
return true;
}bool QUrl::matches(const QUrl &url, QUrl::FormattingOptions options) const
Gibt „ true “ zurück, wenn diese URL und die angegebene „ url “ nach Anwendung von „ options “ auf beide identisch sind; andernfalls wird „ false “ zurückgegeben.
Dies entspricht dem Aufruf von adjusted(options) für beide URLs und dem Vergleich der resultierenden URLs, ist jedoch schneller.
QString QUrl::password(QUrl::ComponentFormattingOptions options = FullyDecoded) const
Gibt das Passwort der URL zurück, sofern es definiert ist; andernfalls wird eine leere Zeichenkette zurückgegeben.
Das Argument „ options “ steuert die Formatierung der Benutzernamenkomponente. Alle Werte liefern ein eindeutiges Ergebnis. Bei „ QUrl::FullyDecoded “ werden alle prozentkodierten Sequenzen dekodiert; andernfalls kann der zurückgegebene Wert einige prozentkodierte Sequenzen für bestimmte Steuerzeichen enthalten, die in der dekodierten Form unter „ QString “ nicht darstellbar sind.
Beachten Sie, dass „ QUrl::FullyDecoded “ zu Datenverlusten führen kann, wenn solche nicht darstellbaren Sequenzen vorhanden sind. Es wird empfohlen, diesen Wert zu verwenden, wenn das Ergebnis in einem Nicht-URL-Kontext verwendet wird, beispielsweise beim Einrichten von „ QAuthenticator “ oder bei der Aushandlung einer Anmeldung.
Siehe auch setPassword().
QString QUrl::path(QUrl::ComponentFormattingOptions options = FullyDecoded) const
Gibt den Pfad der URL zurück.
qDebug() << QUrl("file:file.txt").path(); // "file.txt"
qDebug() << QUrl("/home/user/file.txt").path(); // "/home/user/file.txt"
qDebug() << QUrl("http://www.example.com/test/123").path(); // "/test/123"Das Argument „ options “ steuert, wie die Pfadkomponente formatiert wird. Alle Werte führen zu einem eindeutigen Ergebnis. Bei der Einstellung „ QUrl::FullyDecoded “ werden alle prozentkodierten Sequenzen dekodiert; andernfalls kann der zurückgegebene Wert für bestimmte Steuerzeichenfolgen, die in der dekodierten Form unter „ QString “ nicht darstellbar sind, einige prozentkodierte Sequenzen enthalten.
Beachten Sie, dass „ QUrl::FullyDecoded “ zu Datenverlusten führen kann, wenn solche nicht darstellbaren Sequenzen vorhanden sind. Es wird empfohlen, diesen Wert zu verwenden, wenn das Ergebnis in einem Nicht-URL-Kontext verwendet wird, beispielsweise beim Senden an einen FTP-Server.
Ein Beispiel für Datenverlust tritt auf, wenn Sie nicht-Unicode-Prozent-kodierte Sequenzen haben und FullyDecoded (die Standardeinstellung) verwenden:
In diesem Beispiel kommt es zu einem gewissen Datenverlust, da die Zeichen „ %FF “ nicht konvertiert werden können.
Datenverlust kann auch auftreten, wenn der Pfad Untertrennzeichen enthält (wie z. B. +):
Weitere Beispiele für die Dekodierung:
const QUrl url("/tmp/Mambo %235%3F.mp3");
qDebug() << url.path(QUrl::FullyDecoded); // "/tmp/Mambo #5?.mp3"
qDebug() << url.path(QUrl::PrettyDecoded); // "/tmp/Mambo #5?.mp3"
qDebug() << url.path(QUrl::FullyEncoded); // "/tmp/Mambo%20%235%3F.mp3"Siehe auch setPath().
int QUrl::port(int defaultPort = -1) const
Gibt den Port der URL zurück oder „ defaultPort “, falls der Port nicht angegeben ist.
Beispiel:
QTcpSocket sock;
sock.connectToHost(url.host(), url.port(80));Siehe auch setPort().
QString QUrl::query(QUrl::ComponentFormattingOptions options = PrettyDecoded) const
Gibt den Abfrageparameter der URL zurück, sofern vorhanden, andernfalls ein leeres Ergebnis. Um festzustellen, ob die geparste URL einen Abfrageparameter enthielt, verwenden Sie „ hasQuery()“.
Das Argument ` options ` steuert die Formatierung der Abfragekomponente. Alle Werte liefern ein eindeutiges Ergebnis. Bei ` QUrl::FullyDecoded` werden alle prozentkodierten Sequenzen dekodiert; andernfalls kann der zurückgegebene Wert einige prozentkodierte Sequenzen für bestimmte Steuerzeichen enthalten, die in ` QString` nicht in dekodierter Form darstellbar sind.
Beachten Sie, dass von der Verwendung von ` QUrl::FullyDecoded ` in Abfragen abgeraten wird, da Abfragen häufig Daten enthalten, die prozentkodiert bleiben sollen, einschließlich der Verwendung der Sequenz „%2B“ zur Darstellung eines Pluszeichens („+“).
Siehe auch setQuery() und hasQuery().
QUrl QUrl::resolved(const QUrl &relative) const
Gibt das Ergebnis der Zusammenführung dieser URL mit relative zurück. Diese URL dient als Basis für die Umwandlung von relative in eine absolute URL.
Wenn relative keine relative URL ist, gibt diese Funktion direkt relative zurück. Andernfalls werden die Pfade der beiden URLs zusammengeführt, und die zurückgegebene neue URL hat das Schema und die Autorität der Basis-URL, jedoch mit dem zusammengeführten Pfad, wie im folgenden Beispiel:
QUrl baseUrl("http://qt.digia.com/Support/");
QUrl relativeUrl("../Product/Library/");
qDebug(qUtf8Printable(baseUrl.resolved(relativeUrl).toString()));
// gibt „http://qt.digia.com/Product/Library/“ ausDer Aufruf von resolved() mit „..“ gibt ein QUrl zurück, dessen Verzeichnis eine Ebene höher liegt als das ursprüngliche. Analog dazu entfernt der Aufruf von resolved() mit „../..“ zwei Ebenen aus dem Pfad. Ist relative gleich „/“, wird der Pfad zu „/“.
Siehe auch isRelative().
QString QUrl::scheme() const
Gibt das Schema der URL zurück. Wird eine leere Zeichenkette zurückgegeben, bedeutet dies, dass das Schema nicht definiert ist und die URL somit relativ ist.
Das Schema darf nur US-ASCII-Buchstaben oder Ziffern enthalten, d. h., es darf keine Zeichen enthalten, die andernfalls eine Kodierung erfordern würden. Außerdem werden Schemata immer in Kleinbuchstaben zurückgegeben.
Siehe auch setScheme() und isRelative().
void QUrl::setAuthority(const QString &authority, QUrl::ParsingMode mode = TolerantMode)
Legt die Autorität der URL auf authority fest.
Die Autorität einer URL setzt sich aus Benutzerdaten, einem Hostnamen und einem Port zusammen. Alle diese Elemente sind optional; eine leere Autorität ist daher zulässig.
Die Benutzerinformationen und der Host werden durch ein „@“ getrennt, und der Host und der Port werden durch ein „:“ getrennt. Sind die Benutzerinformationen leer, muss das „@“ weggelassen werden; ein isoliertes „:“ ist jedoch zulässig, wenn der Port leer ist.
Das folgende Beispiel zeigt eine gültige Autoritätszeichenfolge:

Die „ authority “-Daten werden gemäß mode interpretiert: In StrictMode müssen auf alle „%“-Zeichen genau zwei Hexadezimalzeichen folgen, und einige Zeichen (einschließlich Leerzeichen) sind in unkodierter Form nicht zulässig. Bei der Einstellung „ TolerantMode “ (Standard) werden alle Zeichen in unkodierter Form akzeptiert, und der tolerante Parser korrigiert vereinzelte „%“-Zeichen, auf die keine zwei Hexadezimalzeichen folgen.
Diese Funktion lässt nicht zu, dass „ mode “ zu „ QUrl::DecodedMode “ wird. Um vollständig dekodierte Daten festzulegen, rufen Sie „ setUserName()“, „ setPassword()“, „ setHost()“ und „ setPort()“ einzeln auf.
Siehe auch authority(), setUserInfo(), setHost() und setPort().
void QUrl::setFragment(const QString &fragment, QUrl::ParsingMode mode = TolerantMode)
Setzt das Fragment der URL auf fragment. Das Fragment ist der letzte Teil der URL, der durch ein „#“ gefolgt von einer Zeichenfolge dargestellt wird. Es wird in HTTP typischerweise verwendet, um auf einen bestimmten Link oder Punkt auf einer Seite zu verweisen:

Das Fragment wird manchmal auch als „Referenz“ der URL bezeichnet.
Die Übergabe eines Arguments vom Typ `QString()` (ein null- QString) löscht das Fragment. Die Übergabe eines Arguments vom Typ ` QString` („“) (ein leeres, aber nicht null- QString) setzt das Fragment auf eine leere Zeichenkette (als ob die ursprüngliche URL nur ein einzelnes „#“ enthielte).
Die Daten unter fragment werden gemäß mode interpretiert: Unter StrictMode muss auf jedes „%“-Zeichen genau zwei Hexadezimalzeichen folgen, und einige Zeichen (einschließlich Leerzeichen) sind in unkodierter Form nicht zulässig. Unter TolerantMode werden alle Zeichen in unkodierter Form akzeptiert, und der tolerante Parser korrigiert vereinzelte „%“-Zeichen, denen keine zwei Hexadezimalzeichen folgen. In „ DecodedMode “ stehen „%“-Zeichen für sich selbst, und kodierte Zeichen sind nicht zulässig.
QUrl::DecodedMode sollte verwendet werden, wenn das Fragment aus einer Datenquelle festgelegt wird, die keine URL ist, oder wenn das Fragment durch den Aufruf von ` fragment()` mit der Formatierungsoption ` QUrl::FullyDecoded ` ermittelt wurde.
Siehe auch fragment() und hasFragment().
void QUrl::setHost(const QString &host, QUrl::ParsingMode mode = DecodedMode)
Legt den Host der URL auf host fest. Der Host ist Teil der Autorität.
Die Daten unter host werden gemäß mode interpretiert: Unter StrictMode müssen auf alle „%“-Zeichen genau zwei Hexadezimalzeichen folgen, und bestimmte Zeichen (einschließlich Leerzeichen) sind in unkodierter Form nicht zulässig. Unter TolerantMode werden alle Zeichen in unkodierter Form akzeptiert, und der tolerante Parser korrigiert vereinzelte „%“-Zeichen, auf die keine zwei Hexadezimalzeichen folgen. In DecodedMode stehen „%“ für sich selbst, und kodierte Zeichen sind nicht zulässig.
Beachten Sie, dass das Ergebnis der Analyse in allen Fällen ein gültiger Hostname gemäß den STD-3-Regeln sein muss, wie sie durch die Spezifikation „Internationalized Resource Identifiers“ (RFC 3987) modifiziert wurden. Ungültige Hostnamen sind nicht zulässig und führen dazu, dass isValid() den Wert „false“ zurückgibt.
Siehe auch ` host()` und ` setAuthority()`.
[static] void QUrl::setIdnWhitelist(const QStringList &list)
Setzt die Whitelist der Top-Level-Domains (TLDs), bei denen Nicht-ASCII-Zeichen in Domänen zulässig sind, auf den Wert „ list “.
Beachten Sie, dass Sie diese Funktion aufrufen müssen, bevor Sie Threads starten, die möglicherweise auf „ idnWhitelist “ zugreifen.
Qt enthält eine Standardliste mit den Internet-Top-Level-Domains, die Unterstützung für internationalisierte Domainnamen (IDNs) veröffentlicht haben, sowie Regeln, die gewährleisten, dass es nicht zu Verwechslungen zwischen ähnlich aussehenden Zeichen kommen kann (wie beispielsweise dem lateinischen Kleinbuchstaben „ 'a' “ und dem kyrillischen Äquivalent, die in den meisten Schriftarten optisch identisch sind).
Diese Liste wird regelmäßig aktualisiert, sobald Registrare neue Regeln veröffentlichen.
Diese Funktion steht denjenigen zur Verfügung, die die Liste bearbeiten müssen, um eine TLD hinzuzufügen oder zu entfernen. Es wird nicht empfohlen, ihren Wert für andere Zwecke als zu Testzwecken zu ändern, da dies Benutzer Sicherheitsrisiken aussetzen könnte.
Siehe auch idnWhitelist().
void QUrl::setPassword(const QString &password, QUrl::ParsingMode mode = DecodedMode)
Legt das Passwort der URL auf „ password “ fest. „ password “ ist Teil des Elements „user-info“ in der Autorität der URL, wie unter setUserInfo() beschrieben.
Die Daten unter password werden gemäß mode interpretiert: Unter StrictMode muss auf jedes „%“-Zeichen genau zwei Hexadezimalzeichen folgen, und bestimmte Zeichen (einschließlich Leerzeichen) sind in unkodierter Form nicht zulässig. Unter TolerantMode werden alle Zeichen in unkodierter Form akzeptiert, und der tolerante Parser korrigiert vereinzelte „%“-Zeichen, auf die keine zwei Hexadezimalzeichen folgen. In DecodedMode stehen „%“-Zeichen für sich selbst, und kodierte Zeichen sind nicht zulässig.
QUrl::DecodedMode sollte verwendet werden, wenn das Passwort aus einer Datenquelle festgelegt wird, die keine URL ist, z. B. aus einem dem Benutzer angezeigten Passwortdialog oder mit einem Passwort, das durch Aufruf von ` password()` mit der Formatierungsoption ` QUrl::FullyDecoded ` abgerufen wurde.
Siehe auch password() und setUserInfo().
void QUrl::setPath(const QString &path, QUrl::ParsingMode mode = DecodedMode)
Legt den Pfad der URL auf path fest. Der Pfad ist der Teil der URL, der nach der Domäne, aber vor dem Abfrage-String steht.

Bei nicht-hierarchischen Schemata umfasst der Pfad alles, was auf die Schema-Deklaration folgt, wie im folgenden Beispiel:

Die Daten unter path werden gemäß mode interpretiert: In StrictMode muss auf jedes „%“-Zeichen genau zwei Hexadezimalzeichen folgen, und bestimmte Zeichen (einschließlich Leerzeichen) sind in unkodierter Form nicht zulässig. In TolerantMode werden alle Zeichen in unkodierter Form akzeptiert, und der tolerante Parser korrigiert vereinzelte „%“-Zeichen, auf die keine zwei Hexadezimalzeichen folgen. In DecodedMode stehen „%“-Zeichen für sich selbst, und kodierte Zeichen sind nicht zulässig.
QUrl::DecodedMode sollte verwendet werden, wenn der Pfad aus einer Datenquelle festgelegt wird, die keine URL ist, wie beispielsweise ein dem Benutzer angezeigter Dialog oder ein Pfad, der durch den Aufruf von ` path()` mit der Formatierungsoption ` QUrl::FullyDecoded ` ermittelt wurde.
Siehe auch ` path()`.
void QUrl::setPort(int port)
Legt den Port der URL auf port fest. Der Port ist Teil der Autorität der URL, wie unter setAuthority() beschrieben.
port muss zwischen 0 und 65535 (einschließlich) liegen. Die Einstellung des Ports auf -1 bedeutet, dass der Port nicht angegeben ist.
Siehe auch port().
void QUrl::setQuery(const QString &query, QUrl::ParsingMode mode = TolerantMode)
Setzt den Abfrage-String der URL auf query.
Diese Funktion ist nützlich, wenn Sie einen Abfrage-String übergeben müssen, der nicht dem Schlüssel-Wert-Muster entspricht oder der ein anderes Schema zur Kodierung von Sonderzeichen verwendet als das von QUrl vorgeschlagene.
Die Übergabe des Werts `QString()` an ` query ` (ein Null- QString) löscht die Abfrage vollständig. Die Übergabe des Werts ` QString` („“) setzt die Abfrage jedoch auf einen leeren Wert, so als ob die ursprüngliche URL ein einzelnes „?“ enthielte.
Die Daten von „ query “ werden gemäß mode interpretiert: In StrictMode muss auf jedes „%“-Zeichen genau zwei Hexadezimalzeichen folgen, und bestimmte Zeichen (einschließlich Leerzeichen) sind in unkodierter Form nicht zulässig. In TolerantMode werden alle Zeichen in unkodierter Form akzeptiert, und der tolerante Parser korrigiert vereinzelte „%“-Zeichen, auf die keine zwei Hexadezimalzeichen folgen. In DecodedMode stehen „%“-Zeichen für sich selbst, und kodierte Zeichen sind nicht möglich.
Abfragezeichenfolgen enthalten oft prozentkodierte Sequenzen, daher wird von der Verwendung von DecodedMode abgeraten. Eine besondere Sequenz, auf die man achten muss, ist die des Pluszeichens („+“). QUrl wandelt Leerzeichen nicht in Pluszeichen um, auch wenn dies bei HTML-Formularen, die von Webbrowsern gesendet werden, der Fall ist. Um ein tatsächliches Pluszeichen in einer Abfrage darzustellen, wird üblicherweise die Sequenz „%2B“ verwendet. Diese Funktion lässt „%2B“-Sequenzen in TolerantMode oder StrictMode unverändert.
Siehe auch query() und hasQuery().
void QUrl::setQuery(const QUrlQuery &query)
Setzt den Abfrage-String der URL auf „ query “.
Diese Funktion rekonstruiert den Abfrage-String aus dem Objekt „ QUrlQuery “ und legt ihn auf das Objekt „ QUrl “ fest. Diese Funktion verfügt über keine Parameter zum Parsen, da das Objekt „ QUrlQuery “ bereits geparste Daten enthält.
Dies ist eine überladene Funktion.
Siehe auch „ query()“ und „ hasQuery()“.
void QUrl::setScheme(const QString &scheme)
Legt das Schema der URL auf scheme fest. Da ein Schema nur ASCII-Zeichen enthalten darf, erfolgt keine Konvertierung oder Dekodierung der Eingabe. Es muss außerdem mit einem ASCII-Buchstaben beginnen.
Das Schema beschreibt den Typ (oder das Protokoll) der URL. Es wird durch ein oder mehrere ASCII-Zeichen am Anfang der URL dargestellt.
Ein Schema entspricht streng den Vorgaben von RFC 3986: scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
Das folgende Beispiel zeigt eine URL, bei der das Schema „ftp“ lautet:

Um das Schema festzulegen, wird der folgende Aufruf verwendet:
QUrl url;
url.setScheme("ftp");Das Schema kann auch leer sein; in diesem Fall wird die URL als relativ interpretiert.
Siehe auch scheme() und isRelative().
void QUrl::setUrl(const QString &url, QUrl::ParsingMode parsingMode = TolerantMode)
Analysiert url und setzt dieses Objekt auf diesen Wert. QUrl führt automatisch eine Prozent-Kodierung aller Zeichen durch, die in einer URL nicht zulässig sind, und dekodiert die prozent-kodierten Sequenzen, die ein nicht reserviertes Zeichen darstellen (Buchstaben, Ziffern, Bindestriche, Unterstriche, Punkte und Tilden). Alle anderen Zeichen bleiben in ihrer ursprünglichen Form erhalten.
Analysiert die URL url unter Verwendung des Parser-Modus parsingMode. Im Modus „ TolerantMode “ (Standard) korrigiert QUrl bestimmte Fehler, insbesondere das Vorhandensein eines Prozentzeichens („%“), auf das keine zwei Hexadezimalziffern folgen, und akzeptiert jedes Zeichen an jeder Position. Im Modus „ StrictMode “ werden Kodierungsfehler nicht toleriert, und „ QUrl “ prüft zudem, ob bestimmte verbotene Zeichen in unkodierter Form vorhanden sind. Wird im Modus „ StrictMode “ ein Fehler erkannt, gibt „ isValid()“ den Wert „false“ zurück. Der Parser-Modus „ DecodedMode “ ist in diesem Kontext nicht zulässig und führt zu einer Laufzeitwarnung.
Siehe auch url() und toString().
void QUrl::setUserInfo(const QString &userInfo, QUrl::ParsingMode mode = TolerantMode)
Setzt die Benutzerinformationen der URL auf userInfo. Die Benutzerinformationen sind ein optionaler Bestandteil der Autorität der URL, wie unter setAuthority() beschrieben.
Die Benutzerinformationen bestehen aus einem Benutzernamen und optional einem Passwort, die durch ein „:“ getrennt sind. Ist das Passwort leer, muss der Doppelpunkt weggelassen werden. Das folgende Beispiel zeigt eine gültige Zeichenfolge für Benutzerinformationen:

Die Daten unter userInfo werden gemäß mode interpretiert: In StrictMode müssen auf jedes „%“-Zeichen genau zwei Hexadezimalzeichen folgen, und bestimmte Zeichen (einschließlich Leerzeichen) sind in unkodierter Form nicht zulässig. In TolerantMode (der Standard) werden alle Zeichen in unkodierter Form akzeptiert, und der tolerante Parser korrigiert vereinzelte „%“-Zeichen, auf die nicht zwei Hexadezimalzeichen folgen.
Diese Funktion lässt nicht zu, dass „ mode “ zu „ QUrl::DecodedMode “ wird. Um vollständig dekodierte Daten festzulegen, rufen Sie „ setUserName()“ und „ setPassword()“ separat auf.
Siehe auch userInfo(), setUserName(), setPassword() und setAuthority().
void QUrl::setUserName(const QString &userName, QUrl::ParsingMode mode = DecodedMode)
Setzt den Benutzernamen der URL auf „ userName “. Die „ userName “ ist Teil des Elements „user info“ in der Autorität der URL, wie unter setUserInfo() beschrieben.
Die Daten unter userName werden gemäß mode interpretiert: In StrictMode muss auf jedes „%“-Zeichen genau zwei Hexadezimalzeichen folgen, und bestimmte Zeichen (einschließlich Leerzeichen) sind in unkodierter Form nicht zulässig. In TolerantMode (Standardeinstellung) werden alle Zeichen in unkodierter Form akzeptiert, und der tolerante Parser korrigiert vereinzelte „%“-Zeichen, denen keine zwei Hexadezimalzeichen folgen. In DecodedMode stehen „%“-Zeichen für sich selbst, und kodierte Zeichen sind nicht zulässig.
QUrl::DecodedMode sollte verwendet werden, wenn der Benutzername aus einer Datenquelle festgelegt wird, die keine URL ist, wie beispielsweise ein dem Benutzer angezeigter Passwortdialog oder ein Benutzername, der durch Aufruf von ` userName()` mit der Formatierungsoption ` QUrl::FullyDecoded ` abgerufen wurde.
Siehe auch userName() und setUserInfo().
[noexcept] void QUrl::swap(QUrl &other)
Ersetzt diese URL durch other. Dieser Vorgang ist sehr schnell und schlägt niemals fehl.
[static, since 6.3] QByteArray QUrl::toAce(const QString &domain, QUrl::AceProcessingOptions options = {})
Gibt die ASCII-kompatible Kodierung des angegebenen Domainnamens domain zurück. Die Ausgabe kann durch die Übergabe von Flags mit options angepasst werden. Das Ergebnis dieser Funktion gilt als gleichwertig mit domain.
Die ASCII-kompatible Kodierung (ACE) ist in den RFCs 3490, 3491 und 3492 definiert und wurde durch den Unicode Technical Standard Nr. 46 aktualisiert. Sie ist Teil der Spezifikation „Internationalizing Domain Names in Applications“ (IDNA), die es ermöglicht, Domainnamen (wie z. B. "example.com") unter Verwendung von Nicht-US-ASCII-Zeichen zu schreiben.
Diese Funktion gibt ein leeres QByteArray zurück, wenn domain kein gültiger Hostname ist. Beachten Sie insbesondere, dass IPv6-Literale keine gültigen Domainnamen sind.
Diese Funktion wurde in Qt 6.3 eingeführt.
CFURLRef QUrl::toCFURL() const
Erstellt eine CFURL aus einer „ QUrl “.
Der Aufrufer ist Eigentümer der CFURL und dafür verantwortlich, sie freizugeben.
QString QUrl::toDisplayString(QUrl::FormattingOptions options = FormattingOptions(PrettyDecoded)) const
Gibt eine für Menschen lesbare Zeichenfolgen-Darstellung der URL zurück. Die Ausgabe kann durch die Übergabe von Flags an ` options` angepasst werden. Die Option ` RemovePassword ` ist immer aktiviert, da Passwörter den Benutzern niemals angezeigt werden sollten.
Mit den Standardoptionen kann die resultierende „ QString “ später an eine „ QUrl “ zurückgegeben werden, allerdings gehen dabei alle ursprünglich vorhandenen Passwörter verloren.
Siehe auch FormattingOptions, toEncoded() und toString().
QByteArray QUrl::toEncoded(QUrl::FormattingOptions options = FullyEncoded) const
Gibt die kodierte Darstellung der URL zurück, sofern diese gültig ist; andernfalls wird ein leeres ` QByteArray ` zurückgegeben. Die Ausgabe kann durch die Übergabe von Flags mit ` options` angepasst werden.
Die Benutzerinformationen, der Pfad und das Fragment werden alle in UTF-8 konvertiert, und alle Nicht-ASCII-Zeichen werden anschließend prozentkodiert. Der Hostname wird mit Punycode kodiert.
QString QUrl::toLocalFile() const
Gibt den Pfad dieser URL als lokalen Dateipfad zurück. Der zurückgegebene Pfad enthält Schrägstriche, auch wenn die URL ursprünglich mit Backslashes erstellt wurde.
Wenn diese URL einen nicht leeren Hostnamen enthält, wird dieser im Rückgabewert in der für SMB-Netzwerke üblichen Form kodiert (zum Beispiel „//servername/path/to/file.txt“).
qDebug() << QUrl("file:file.txt").toLocalFile(); // „file.txt“
qDebug() << QUrl("file:/home/user/file.txt").toLocalFile(); // "/home/user/file.txt"
qDebug() << QUrl("file.txt").toLocalFile(); // ""; wasn't a local file as it had no schemeHinweis: Wenn die Pfadkomponente dieser URL eine nicht-UTF-8-konforme Binärsequenz (wie z. B. %80) enthält, ist das Verhalten dieser Funktion undefiniert.
Siehe auch fromLocalFile() und isLocalFile().
NSURL *QUrl::toNSURL() const
Erstellt ein NSURL aus einem „ QUrl “.
Das NSURL wird automatisch freigegeben.
[static] QByteArray QUrl::toPercentEncoding(const QString &input, const QByteArray &exclude = QByteArray(), const QByteArray &include = QByteArray())
Gibt eine kodierte Kopie von input zurück. input wird zunächst in UTF-8 konvertiert, und alle ASCII-Zeichen, die nicht zur Gruppe der nicht reservierten Zeichen gehören, werden prozentkodiert. Um zu verhindern, dass Zeichen prozentkodiert werden, übergeben Sie diese an exclude. Um die Prozentkodierung von Zeichen zu erzwingen, übergeben Sie diese an include.
„Unreserved“ ist wie folgt definiert: ALPHA / DIGIT / "-" / "." / "_" / "~"
QByteArray ba = QUrl::toPercentEncoding("{eine verdächtige Zeichenfolge?}", "{}", "s");
qDebug(ba.constData());
// gibt „{a fi%73hy %73tring%3F}“ ausQString QUrl::toString(QUrl::FormattingOptions options = FormattingOptions(PrettyDecoded)) const
Gibt eine Zeichenfolgenrepräsentation der URL zurück. Die Ausgabe kann durch die Übergabe von Flags mit „ options “ angepasst werden. Die Option „ QUrl::FullyDecoded “ ist in dieser Funktion nicht zulässig, da sie mehrdeutige Daten erzeugen würde.
Die Standardformatierungsoption ist „ PrettyDecoded “.
Siehe auch „ FormattingOptions“ , „ url()“ und „ setUrl()“.
[static] QStringList QUrl::toStringList(const QList<QUrl> &urls, QUrl::FormattingOptions options = FormattingOptions(PrettyDecoded))
Wandelt eine Liste von „ urls “-Objekten mithilfe von „ toString “ (options) in eine Liste von „ QString “-Objekten um.
QString QUrl::url(QUrl::FormattingOptions options = FormattingOptions(PrettyDecoded)) const
Gibt eine Zeichenfolgendarstellung der URL zurück. Die Ausgabe kann durch die Übergabe von Flags mit ` options` angepasst werden. Die Option ` QUrl::FullyDecoded ` ist in dieser Funktion nicht zulässig, da sie mehrdeutige Daten erzeugen würde.
Der resultierende ` QString ` kann später an einen ` QUrl ` zurückgegeben werden.
Synonym für ` toString(options)`.
Siehe auch „ setUrl()“, „ FormattingOptions “, „ toEncoded()“ und „ toString()“.
QString QUrl::userInfo(QUrl::ComponentFormattingOptions options = PrettyDecoded) const
Gibt die Benutzerinformationen der URL zurück oder eine leere Zeichenkette, falls die Benutzerinformationen nicht definiert sind.
Diese Funktion gibt einen eindeutigen Wert zurück, der möglicherweise noch prozentkodierte Zeichen sowie einige Steuerzeichenfolgen enthält, die in „ QString “ nicht in dekodierter Form dargestellt werden können.
Das Argument „ options “ steuert die Formatierung der Benutzerinformationskomponente. Der Wert „ QUrl::FullyDecoded “ ist in dieser Funktion nicht zulässig. Wenn Sie vollständig dekodierte Daten benötigen, rufen Sie die Funktionen „ userName()“ und „ password()“ separat auf.
Siehe auch setUserInfo(), userName(), password() und authority().
QString QUrl::userName(QUrl::ComponentFormattingOptions options = FullyDecoded) const
Gibt den Benutzernamen der URL zurück, sofern dieser definiert ist; andernfalls wird eine leere Zeichenkette zurückgegeben.
Das Argument „ options “ steuert die Formatierung der Benutzernamenskomponente. Alle Werte liefern ein eindeutiges Ergebnis. Bei „ QUrl::FullyDecoded “ werden alle prozentkodierten Sequenzen dekodiert; andernfalls kann der zurückgegebene Wert einige prozentkodierte Sequenzen für bestimmte Steuerzeichen enthalten, die in der dekodierten Form unter „ QString “ nicht darstellbar sind.
Beachten Sie, dass „ QUrl::FullyDecoded “ zu Datenverlusten führen kann, wenn solche nicht darstellbaren Sequenzen vorhanden sind. Es wird empfohlen, diesen Wert zu verwenden, wenn das Ergebnis in einem Nicht-URL-Kontext verwendet wird, beispielsweise beim Festlegen in „ QAuthenticator “ oder bei der Aushandlung einer Anmeldung.
Siehe auch setUserName() und userInfo().
[noexcept] QUrl &QUrl::operator=(QUrl &&other)
Weist „ other “ dieser „ QUrl “-Instanz zu.
QUrl &QUrl::operator=(const QString &url)
Weist diesem Objekt den angegebenen „ url “ zu.
Dieser Operator ist nicht verfügbar, wenn das Makro „ QT_NO_URL_CAST_FROM_STRING “ definiert ist.
[noexcept] QUrl &QUrl::operator=(const QUrl &url)
Weist diesem Objekt die angegebene „ url “ zu.
Verwandte Nicht-Mitglieder
[noexcept] bool operator!=(const QUrl &lhs, const QUrl &rhs)
Gibt „ true “ zurück, wenn die URLs „ lhs “ und „ rhs “ nicht identisch sind; andernfalls wird „ false “ zurückgegeben.
Siehe auch matches().
QDataStream &operator<<(QDataStream &out, const QUrl &url)
Schreibt die URL url in den Stream out und gibt eine Referenz auf den Stream zurück.
Siehe auch „Format der QDataStream-Operatoren“.
[noexcept] bool operator==(const QUrl &lhs, const QUrl &rhs)
Gibt „ true “ zurück, wenn die URLs „ lhs “ und „ rhs “ identisch sind; andernfalls wird „ false “ zurückgegeben.
Siehe auch matches().
QDataStream &operator>>(QDataStream &in, QUrl &url)
Liest eine URL aus dem Stream „ in “ in „ url “ ein und gibt eine Referenz auf den Stream zurück.
Siehe auch „Format der QDataStream-Operatoren“.
Makro-Dokumentation
QT_NO_URL_CAST_FROM_STRING
Deaktiviert automatische Konvertierungen von ` QString ` (oder `char *`) in ` QUrl`.
Das Kompilieren Ihres Codes mit dieser Definition ist sinnvoll, wenn Sie viel Code haben, der „ QString “ für Dateinamen verwendet, und Sie diesen umstellen möchten, um „ QUrl “ zu verwenden, um Netzwerktransparenz zu gewährleisten. In jedem Code, der „ QUrl “ verwendet, kann dies dazu beitragen, fehlende Aufrufe von „ QUrl::resolved()“ sowie andere Fehlanwendungen von Konvertierungen von „ QString “ zu „ QUrl “ zu vermeiden.
Wenn Sie beispielsweise folgenden Code haben:
url = filename; // probably not what you wantkönnen Sie diesen wie folgt umschreiben:
Siehe auch QT_NO_CAST_FROM_ASCII.
© 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.