Auf dieser Seite

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

Hinweis: Alle Funktionen dieser Klasse sind reentrant.

QUrl-Vergleiche

KategorieVergleichbare Typen
schwachQUrl

Ö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))
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" scheme

Beachten 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 path

Eine 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:

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.1 und http://2130706433 ergeben beide den Host 127.0.0.1, und http://good.com\\@evil.com/ ergibt den Host evil.com. Verwenden Sie FullyEncoded anstelle 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.

KonstanteWertBeschreibung
QUrl::IgnoreIDNWhitelist0x1Die IDN-Whitelist bei der Konvertierung von URLs in Unicode ignorieren.
QUrl::AceTransitionalProcessing0x2Verwenden 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.

KonstanteWertBeschreibung
QUrl::PrettyDecoded0x000000Die 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::EncodeSpaces0x100000Lässt Leerzeichen in ihrer kodierten Form („%20“) erhalten.
QUrl::EncodeUnicode0x200000Nicht-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::EncodeDelimiters0x400000 | 0x800000Bestimmte 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::EncodeReserved0x1000000Behalten 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::DecodeReserved0x2000000Dekodieren 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::FullyEncodedEncodeSpaces | EncodeUnicode | EncodeDelimiters | EncodeReservedBehalte 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::FullyDecodedFullyEncoded | DecodeReserved | 0x4000000Versuchen 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&c

Wü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.

KonstanteWertBeschreibung
QUrl::TolerantMode0QUrl 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::StrictMode1Es werden nur gültige URLs akzeptiert. Dieser Modus eignet sich für die allgemeine URL-Validierung.
QUrl::DecodedMode2QUrl 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.

KonstanteWertBeschreibung
QUrl::None0x0Das Format der URL bleibt unverändert.
QUrl::RemoveScheme0x1Das Schema wird aus der URL entfernt.
QUrl::RemovePassword0x2Etwaige Passwörter in der URL werden entfernt.
QUrl::RemoveUserInfoRemovePassword | 0x4Alle Benutzerinformationen in der URL werden entfernt.
QUrl::RemovePort0x8Alle angegebenen Ports werden aus der URL entfernt.
QUrl::RemoveAuthorityRemoveUserInfo | RemovePort | 0x10Entfernen Sie Benutzername, Passwort, Host und Port.
QUrl::RemovePath0x20Der Pfad der URL wird entfernt, sodass nur das Schema, die Host-Adresse und der Port (falls vorhanden) übrig bleiben.
QUrl::RemoveQuery0x40Der Abfrageteil der URL (nach dem Zeichen „?“) wird entfernt.
QUrl::RemoveFragment0x80Der Fragmentteil der URL (einschließlich des Zeichens „#“) wird entfernt.
QUrl::RemoveFilename0x800Der 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::PreferLocalFile0x200Wenn 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::StripTrailingSlash0x400Der abschließende Schrägstrich wird aus dem Pfad entfernt, sofern vorhanden.
QUrl::NormalizePathSegments0x1000Passen 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.

KonstanteWertBeschreibung
QUrl::DefaultResolution0Der 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::AssumeLocalFile1Diese 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:

QUrl url = QUrl::fromEncoded("http://qt-project.org/List%20of%20holidays.xml");

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 scheme

In 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:

qDebug() << QUrl("/foo%FFbar").path();

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. +):

qDebug() << QUrl("/foo+bar%2B").path(); // "/foo+bar+"

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/“ aus

Der 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:

Screenshot einer URL mit den folgenden gekennzeichneten Bestandteilen: Schema, Autorität, Benutzerdaten (Benutzername und Passwort), Host und Port.

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:

Screenshot einer URL, bei der das Fragment hervorgehoben ist

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.

Screenshot, auf dem eine URL mit hervorgehobenem Pfad zu sehen ist

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

Screenshot einer URL, auf der der E-Mail-Pfad hervorgehoben ist

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:

Abbildung, in der „ftp“ als Schema einer Beispiel-URL hervorgehoben ist, die mit „ftp://“ beginnt.

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:

Screenshot einer URL, auf der die Benutzerdaten hervorgehoben sind

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 scheme

Hinweis: 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}“ aus

QString 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 want

können Sie diesen wie folgt umschreiben:

url = QUrl::fromLocalFile(filename);
url = baseurl.resolved(QUrl(filename));

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.