Wie in Ihrer link, :/main.qml
ist ein Dateipfad angegeben, während qrc:/main.qml
eine URL ist.
Die erste kann verwendet werden, wo ein Dateipfad erforderlich ist - im Grunde ein QString
, wie mit QFile
Konstruktor.
Letzteres kann verwendet werden, wenn eine URL erforderlich ist, z. B. mit QQmlApplicationEngine::load
bis QUrl
. Es kann nicht mit QFile
Konstruktor verwendet werden, wo ein Pfad benötigt wird.
Über qrc:///
, eine vereinfachte URL-Syntax (ohne Abfrage Benutzer/Passwort, noch Port) können sein:
scheme:[//host][/]path
die zu scheme:/path
führen kann, wenn Sie host
Teil überspringen oder scheme:///path
wenn Sie angeben host
als eine leere Zeichenfolge. Von RFC 3986:
Zum Beispiel das „Datei“ URI-Schema ist so definiert, dass keine Autorität, eine leere Host und „localhost“ alle bedeutet die Endbenutzers Maschine, während der " Das HTTP-Schema betrachtet eine fehlende Autorität oder einen leeren Host als ungültig.
Sieht aus wie Qt-Entwickler, die Regeln des file
Schema gefolgt, wenn ihre qrc
Schema zu entwerfen. Schließlich sind die Ressourcen hier nur Dateien "auf dem Computer des Endbenutzers" (tatsächlich in einer ausführbaren Datei auf dem Computer des Endbenutzers). So sind qrc:/main.qml
und qrc:///main.qml
nur zwei Schriften derselben URL.
Siehe here für vollständige URL-Syntax.
Danke, und was ist mit 'qrc: ///'? –
@StefanMonov: Siehe den Dokumentationslink: "[...] der Dateipfad':/images/cut.png' oder die ** URL ** 'qrc: /// images/cut.png' [... ] ". Grundsätzlich: 'qrc: ///' = URL. – Pixelchemist
@StefanMonov Ich habe meine Antwort bearbeitet;) – wasthishelpful