QUrl Class
QUrl クラスは、URL を扱うための便利なインターフェースを提供します。詳細...
| ヘッダー: | #include <QUrl> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
- 継承されたメンバーを含む、すべてのメンバーの一覧
- QUrlは、「入出力およびネットワーク」、「ネットワークプログラミングAPI」、および「暗黙的に共有されるクラス」の一部です。
注:このクラスのすべての関数は再入可能です。
QUrl の比較
| カテゴリ | 比較可能な型 |
|---|---|
| weak | QUrl |
パブリック型
(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 |
パブリック関数
| 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) |
静的パブリックメンバー
(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) |
マクロ
詳細な説明
エンコード済みおよび非エンコード済みの両方の形式でURLを解析および生成できます。また、QUrlは国際化ドメイン名(IDN)にも対応しています。
QUrl を使用する最も一般的な方法は、完全な URL を含む `QString ` を引数としてコンストラクタに渡して初期化することです。また、`QUrl::fromEncoded()` を使用して完全な URL を含む `QByteArray ` から QUrl オブジェクトを作成したり、`QUrl::fromUserInput()` を使用して不完全な URL からヒューリスティックに QUrl オブジェクトを作成したりすることもできます。URL の表現は、`QUrl::toString()` または `QUrl::toEncoded()` のいずれかを使用して QUrl から取得できます。
URLは、エンコード済みと未エンコードの2つの形式で表現できます。未エンコードの表現はユーザーへの表示に適していますが、通常、Webサーバーに送信するのはエンコード済みの表現です。 たとえば、エンコードされていない URL「http://bühler.example.com/List of applicants.xml」は、サーバーには「http://xn–bhler-kva.example.com/List%20of%20applicants.xml」として送信されます。
また、setScheme()、setUserName()、setPassword()、setHost()、setPort()、setPath()、setQuery()、setFragment() を呼び出すことで、URL を部分ごとに構築することもできます。便利な関数もいくつか用意されています。setAuthority() は、ユーザー名、パスワード、ホスト、ポートを設定します。setUserInfo() は、ユーザー名とパスワードを一度に設定します。
URLが有効かどうかを確認するには、isValid()を呼び出します。これは、URLの構築中のどの時点でも実行できます。isValid()がfalse を返した場合は、処理を進める前にclear()でURLを検証するか、setUrl()を使用して新しいURLを解析し直してください。
クエリの構築には、QUrlQuery クラスとそのメソッドであるQUrlQuery::setQueryItems()、QUrlQuery::addQueryItem()、QUrlQuery::removeQueryItem()を使用すると特に便利です。クエリ文字列の生成に使用する区切り文字をカスタマイズするには、QUrlQuery::setQueryDelimiters()を使用してください。
エンコードされたURL文字列やクエリ文字列を生成する際に便利であるよう、QString オブジェクトのパーセントエンコードおよびデコードを処理するfromPercentEncoding()およびtoPercentEncoding()という2つの静的関数が用意されています。
fromLocalFile() は、ローカルファイルパスを解析して QUrl を生成します。toLocalFile() は、URL をローカルファイルパスに変換します。
toString() を使用すると、人間が読みやすい形式の URL を取得できます。この形式は、エンコードされていない状態でユーザーに URL を表示するのに適しています。 一方、toEncoded() によって返されるエンコードされた形式は、内部使用や、Web サーバーやメールクライアントなどへの渡しのために使用されます。どちらの形式も技術的には正しく、同じ URL を曖昧さなく表しています。実際、どちらの形式を QUrl のコンストラクタやsetUrl() に渡しても、同じ QUrl オブジェクトが生成されます。
QUrlは、RFC 3986(Uniform Resource Identifier: Generic Syntax)のURI仕様に準拠しており、RFC 1738(Uniform Resource Locators)のスキーム拡張も含まれています。 QUrl の大文字小文字の区別に関するルールは、RFC 3491(Nameprep: 国際化ドメイン名 (IDN) 用の Stringprep プロファイル)に準拠しています。 また、ロケールが UTF-8 を使用してファイル名をエンコードしている場合(IDN で必須)、freedesktop.orgのファイル URI 仕様とも互換性があります。
相対URLと相対パス
isRelative() を呼び出すと、その URL が相対 URL であるかどうかが返されます。相対 URL にはscheme が含まれません。例:
qDebug()<<QUrl("main.qml").isRelative(); // true: スキームなし
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" schemeURLは、相対パスを含みながらも絶対URLとなり得るほか、その逆も同様であることに注意してください:
// 絶対URL、相対パス
QUrl url("file:file.txt");
qDebug() << url.isRelative(); // false: has "file" scheme
qDebug() << QDir::isAbsolutePath(url.path()); // false: relative path
// 相対URL、絶対パス
url=QUrl("/home/user/file.txt");
qDebug() << url.isRelative(); // true: has no scheme
qDebug() << QDir::isAbsolutePath(url.path()); // true: absolute path相対URLは、resolved() に引数として渡すことで解決でき、これにより絶対URLが返されます。isParentOf() は、あるURLが別のURLの親であるかどうかを判定するために使用されます。
エラーチェック
QUrl は、URL の解析中や、個々のセッターメソッド(setScheme()、setHost()、setPath() など)を使用して URL の構成要素を設定する際に、多くのエラーを検出することができます。解析やセッター関数の実行が成功した場合、以前に記録されたエラー条件はすべて破棄されます。
デフォルトでは、QUrlのセッターメソッドはQUrl::TolerantMode で動作します。これは、一般的なミスやデータの誤った表現をある程度許容することを意味します。別の解析方法としてQUrl::StrictMode があり、こちらはさらに詳細なチェックを行います。解析モードの違いに関する説明については、QUrl::ParsingMode を参照してください。
QUrlは、URL仕様への準拠のみをチェックします。高レベルプロトコルのURLが、他のハンドラで期待される形式になっているかどうかを検証しようとはしません。たとえば、以下のURIは、使用した際に意味をなさない場合でも、QUrlによってすべて有効と見なされます:
- "http:/filename.html"
- "mailto://example.com"
パーサーがエラーを検出した場合、isValid() を false に返し、toString() /toEncoded() を空の文字列として返すことで、そのイベントを通知します。URL の解析に失敗した理由をユーザーに表示する必要がある場合は、errorString() を呼び出すことで、QUrl からエラー状態を取得できます。 なお、このメッセージは高度に技術的なものであり、エンドユーザーには理解できない可能性があることに注意してください。
QUrl は 1 つのエラー状態しか記録できません。複数のエラーが検出された場合、どのエラーが報告されるかは未定義です。
文字変換
URL や文字列を扱う際に、誤った文字変換を防ぐため、以下のルールに従ってください:
- QByteArray または char* からの URL を含むQString を作成する際は、常に `QString::fromUtf8()` を使用してください。
セキュリティ上の考慮事項
信頼できないソース(ネットワーク、ファイルやドキュメント、他のアプリケーション、またはユーザー)からのURLは、悪意のある入力として扱ってください。
- 解析済みのURLを検証し、生の文字列を検証してはなりません。QUrlが抽出されたコンポーネントに対して、許可/拒否リスト、オリジン、またはリダイレクトチェックを実行してください(ホストチェックには
url.host(QUrl::FullyEncoded)を使用)。元のテキストに対してチェックを行わないでください。 QUrl は、文字列チェックでは検出できない形式を正規化します。たとえば、http://0x7f.0.0.1とhttp://2130706433はどちらもホスト127.0.0.1となり、http://good.com\\@evil.com/はホストevil.comとなります。デフォルトのデコード形式ではなくFullyEncodedを使用することで、国際化ドメイン名 (IDN) のホストは ASCII 形式で比較されるため、類似した Unicode 文字によるなりすましを防ぐことができます。 - チェックとリクエストには、同じ解析済みURLを使用してください。その後、元の文字列を別のパーサーに渡すと、チェックによって解消された不一致が再び生じることになります。
- FullyDecoded を使用してコンポーネントを取得する際は、特に注意が必要です。取得したコンポーネントによっては、結果に情報が失われたり、意味が異なったりする可能性があります。また、
NULを含む制御文字が含まれる場合もあります。詳細については、Full decoding を参照してください。
メンバ型のドキュメント
[since 6.3] enum QUrl::AceProcessingOption
flags QUrl::AceProcessingOptions
ACE 処理オプションは、URL が ASCII 互換エンコーディングとの間で変換される方法を制御します。
| 定数 | 値 | 説明 |
|---|---|---|
QUrl::IgnoreIDNWhitelist | 0x1 | URL を Unicode に変換する際に、IDN ホワイトリストを無視します。 |
QUrl::AceTransitionalProcessing | 0x2 | UTS #46 に記載されている遷移処理を使用します。これにより、IDNA 2003 仕様との互換性が向上します。 |
デフォルトでは、非遷移処理が使用され、IDN ホワイトリストにリストされているトップレベルドメインを持つ URL 内でのみ、非 ASCII 文字が許可されます。
この列挙型は Qt 6.3 で導入されました。
AceProcessingOptions 型は、QFlags<AceProcessingOption> の typedef です。AceProcessingOption 値の OR 組み合わせを格納します。
toAce()、fromAce()、およびidnWhitelist()も参照してください 。
enum QUrl::ComponentFormattingOption
flags QUrl::ComponentFormattingOptions
コンポーネントの書式設定オプションは、URLの構成要素をテキストとして出力する際の書式を定義します。これらは、toString() およびtoEncoded() で使用する際、QUrl::FormattingOptions のオプションと組み合わせて使用することができます。
| 定数 | 値 | 説明 |
|---|---|---|
QUrl::PrettyDecoded | 0x000000 | コンポーネントは「見やすい形式」で返され、パーセントエンコードされた文字のほとんどがデコードされます。PrettyDecoded の正確な動作はコンポーネントごとに異なり、Qt のリリースごとに変更される場合もあります。これがデフォルトです。 |
QUrl::EncodeSpaces | 0x100000 | スペース文字はエンコードされた形式(「%20」)のままにします。 |
QUrl::EncodeUnicode | 0x200000 | US-ASCII 以外の文字は、UTF-8 パーセントエンコード形式のまま残します(例:コードポイント U+00E9、LATIN SMALL LETTER E WITH ACUTE に対して「%C3%A9」)。 |
QUrl::EncodeDelimiters | 0x400000 | 0x800000 | 特定の区切り文字は、完全な URL がテキストとして表現された際に URL 内に表示されるのと同じエンコード形式のままにします。このオプションによる区切り文字への影響は、コンポーネントごとに異なります。このフラグは、toString() またはtoEncoded() では効果を持ちません。 |
QUrl::EncodeReserved | 0x1000000 | 仕様によりURL内で許可されていないUS-ASCII文字は、エンコードされた形式のままにします。これは、toString()およびtoEncoded()でのデフォルト設定です。 |
QUrl::DecodeReserved | 0x2000000 | URL仕様でURL内への使用が許可されていないUS-ASCII文字をデコードします。これは、個々のコンポーネントのゲッターにおけるデフォルト設定です。 |
QUrl::FullyEncoded | EncodeSpaces | EncodeUnicode | EncodeDelimiters | EncodeReserved | このコンポーネントが URL の一部として表示される場合と同様に、すべての文字を適切にエンコードされた形式のままにします。toString() と併用すると、QString 形式の完全に準拠した URL が生成され、これはtoEncoded() の結果と完全に一致します。 |
QUrl::FullyDecoded | FullyEncoded | DecodeReserved | 0x4000000 | 可能な限りデコードを試みます。URLの個々の構成要素について、パーセントエンコードされた形式で見つかる制御文字(U+0000 ~ U+001F)やUTF-8シーケンスを含め、すべてのパーセントエンコードシーケンスをデコードします。このモードを使用するとデータが失われる可能性があります。詳細については以下を参照してください。 |
EncodeReserved と DecodeReserved の値を 1 回の呼び出しで併用しないでください。併用した場合、動作は未定義となります。これらが別々の値として提供されているのは、「プリティモード」における予約文字に対する動作が、特定のコンポーネント、特に URL 全体において異なるためです。
完全なデコード
FullyDecoded モードは、Qt 4.x で `QString ` を返す関数の挙動に似ており、すべての文字がそれ自体を表し、特別な意味を持つことはありません。これはパーセント文字('%')についても同様であり、パーセントエンコードされたシーケンスの開始ではなく、リテラルとしてのパーセントとして解釈されるべきです。 他のすべてのデコードモードでは、この同じ文字は「%25」というシーケンスで表現されます。
QUrl::FullyDecoded で取得したデータをQUrl に再適用する場合は、必ずsetPath() やsetUserName() などのセッターに対して、QUrl::DecodedMode パラメータを指定するように注意する必要があります。これを怠ると、パーセント文字('%')がパーセントエンコードされたシーケンスの開始として再解釈される可能性があります。
このモードは、URL の一部が URL 以外のコンテキストで使用される場合に非常に有用です。たとえば、FTP クライアントアプリケーションでユーザー名、パスワード、またはファイルパスを抽出するには、FullyDecoded モードを使用する必要があります。
このモードは、返されるQString で確実に表現できない2つの条件があるため、注意して使用する必要があります。それらは以下の通りです:
- UTF-8 以外の文字列:URL には、有効な UTF-8 文字列を構成しないパーセントエンコードされた文字列が含まれている場合があります。URL は UTF-8 を使用してデコードする必要があるため、デコードに失敗すると、その文字列が存在していた箇所に 1 つ以上の置換文字が含まれた `QString ` が返されます。
- エンコードされた区切り文字:URLでは、リテラル形式の区切り文字と、パーセントエンコードされた形式の同等の区切り文字とを区別することも許可されています。これはクエリ部分で最もよく見られますが、URLのほとんどの箇所で許可されています。
次の例は、この問題を示しています:
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もしこの2つのURLがHTTP GETで利用された場合、Webサーバーによる解釈はおそらく異なるでしょう。最初のケースでは、キーが「q」、値が「a+=b&c」である1つのパラメータとして解釈されるでしょう。 2番目のケースでは、おそらく2つのパラメータとして解釈されるでしょう。1つはキーが「q」、値が「a =b」であり、もう1つはキーが「c」で値がないものです。
ComponentFormattingOptions 型は、QFlags<ComponentFormattingOption> の typedef です。これは、ComponentFormattingOption の値の論理和(OR)の組み合わせを格納します。
QUrl::FormattingOptionsも参照してください 。
enum QUrl::ParsingMode
解析モードは、QUrl が文字列を解析する方法を制御します。
| 定数 | 値 | 説明 |
|---|---|---|
QUrl::TolerantMode | 0 | QUrl は、URL によく見られるエラーの修正を試みます。このモードは、厳密に標準に準拠しているとは限らないソースからの URL を解析する際に役立ちます。 |
QUrl::StrictMode | 1 | 有効な URL のみを受け入れます。このモードは、一般的な URL の検証に役立ちます。 |
QUrl::DecodedMode | 2 | QUrl URL コンポーネントを完全にデコードされた形式で解釈します。この形式では、パーセント文字はパーセントエンコードされたシーケンスの先頭としてではなく、それ自体として扱われます。このモードは、URL のコンポーネントを設定するセッターでのみ有効です。QUrl コンストラクタ、fromEncoded()、またはsetUrl() では使用できません。このモードの詳細については、QUrl::FullyDecoded のドキュメントを参照してください。 |
TolerantMode では、パーサーは以下の挙動を示します:
- スペースおよび「%20」: エンコードされていないスペース文字は受け入れられ、「%20」と同等として扱われます。
- 単一の「%」文字:パーセント記号「%」の後に 2 文字の 16 進数が続かない場合(例: 「13% coverage.html」)、パーサーは入力がエンコードされていないものとみなして、すべての「%」文字を「%25」に置き換えます。
- 予約文字および非予約文字:エンコードされたURLには、リテラルとして使用される文字はごくわずかであるべきであり、それ以外のすべての文字はパーセントエンコードされる必要があります。 TolerantMode では、URL 内で以下の文字が見つかった場合、それらは受け入れられます:スペース / ダブルクォート / "<" / ">" / "" / "^" / "`" / "{" / "|" / "}" これらの文字は、QUrl::DecodeReserved をtoString()またはtoEncoded()に渡し、再デコードすることができます。個々のコンポーネントのゲッターでは、これらの文字は多くの場合、デコードされた形式で返されます。
StrictMode では、解析エラーが検出された場合、isValid() はfalse を返し、errorString() はエラーを説明するメッセージを返します。複数のエラーが検出された場合、どのエラーが報告されるかは未定義です。
なお、TolerantMode では通常、ユーザー入力の解析には不十分であることに注意してください。ユーザー入力には、パーサーが処理できる範囲を超えるエラーや期待値が含まれていることが多いためです。他のプログラムなどのデータ転送ソースから得られるデータとは対照的に、ユーザーから直接得られるデータを扱う場合は、fromUserInput() を使用することを推奨します。
fromUserInput()、setUrl()、toString()、toEncoded()、およびQUrl::FormattingOptionsも参照してください 。
enum QUrl::UrlFormattingOption
flags QUrl::FormattingOptions
書式設定オプションは、URLがテキストとして出力される際の表示形式を定義します。
| 定数 | 値 | 説明 |
|---|---|---|
QUrl::None | 0x0 | URL の形式は変更されません。 |
QUrl::RemoveScheme | 0x1 | URL からスキームが削除されます。 |
QUrl::RemovePassword | 0x2 | URLに含まれるパスワードはすべて削除されます。 |
QUrl::RemoveUserInfo | RemovePassword | 0x4 | URL 内のユーザー情報はすべて削除されます。 |
QUrl::RemovePort | 0x8 | URL から指定されたポートが削除されます。 |
QUrl::RemoveAuthority | RemoveUserInfo | RemovePort | 0x10 | ユーザー名、パスワード、ホスト、およびポートを削除します。 |
QUrl::RemovePath | 0x20 | URL のパスが削除され、スキーム、ホストアドレス、およびポート(存在する場合)のみが残ります。 |
QUrl::RemoveQuery | 0x40 | URL のクエリ部分(「?」文字の後の部分)が削除されます。 |
QUrl::RemoveFragment | 0x80 | URL のフラグメント部分(「#」文字を含む)が削除されます。 |
QUrl::RemoveFilename | 0x800 | ファイル名(つまり、パス内の最後の「/」以降のすべて)が削除されます。StripTrailingSlash が設定されていない限り、末尾の「/」は残されます。これは、RemovePath が設定されていない場合にのみ有効です。 |
QUrl::PreferLocalFile | 0x200 | URL がisLocalFile() に従ってローカルファイルであり、クエリやフラグメントを含まない場合、ローカルファイルパスが返されます。 |
QUrl::StripTrailingSlash | 0x400 | パスに末尾のスラッシュが含まれている場合は、それが削除されます。 |
QUrl::NormalizePathSegments | 0x1000 | パスから余分なディレクトリ区切り記号を削除し、「.」や「..」を(可能な限り)解決するようにパスを修正します。ローカル以外のパスについては、隣接するスラッシュは保持されます。 |
QUrl が準拠しているNameprep の大文字小文字の変換ルールでは、使用される Qt::FormattingOptions に関係なく、ホスト名は常に小文字に変換されることに注意してください。
QUrl::ComponentFormattingOptions のオプションも使用可能です。
FormattingOptions 型は、QFlags<UrlFormattingOption> の typedef です。これは、UrlFormattingOption 値の OR 組み合わせを格納します。
QUrl::ComponentFormattingOptionsも参照してください 。
enum QUrl::UserInputResolutionOption
flags QUrl::UserInputResolutionOptions
ユーザー入力の解像度オプションは、fromUserInput() が、相対パスである可能性もあれば HTTP URL の短縮形である可能性もある文字列をどのように解釈すべきかを定義します。たとえば、file.pl は、ローカルファイルである場合もあれば、URLhttp://file.pl である場合もあります。
| 定数 | 値 | 説明 |
|---|---|---|
QUrl::DefaultResolution | 0 | デフォルトの解決メカニズムは、fromUserInput に指定された作業ディレクトリにローカルファイルが存在するかどうかを確認し、その場合にのみローカルパスを返すというものです。それ以外の場合は、URL であるとみなされます。 |
QUrl::AssumeLocalFile | 1 | このオプションを指定すると、fromUserInput() は、http://file.pl のようなスキーマが含まれていない限り、常にローカルパスを返します。これは、ファイルが存在しない場合にファイルを作成できるテキストエディタなどのアプリケーションで役立ちます。 |
UserInputResolutionOptions 型は、QFlags<UserInputResolutionOption> の typedef です。これは、UserInputResolutionOption の値の論理和(OR)を格納します。
fromUserInput()も参照してください 。
メンバ関数のドキュメント
QUrl::QUrl()
空の QUrl オブジェクトを作成します。
QUrl::QUrl(const QString &url, QUrl::ParsingMode parsingMode = TolerantMode)
url を解析して URL を構築します。このコンストラクタは、適切な URL または URL リファレンスを受け取ることを前提としており、意図を推測しようとはしません。たとえば、次のような宣言:
QUrl url("example.com");これは有効なURLを生成しますが、入力の「scheme()」部分が欠落しているため、期待通りの結果にならない可能性があります。上記のような文字列の場合、アプリケーションでは `fromUserInput()` を使用することを推奨します。このコンストラクタや `setUrl()` を使用する場合、おそらく意図されていたのは次のようなものです:
QUrl url("https://example.com");QUrlは、URLで許可されていないすべての文字を自動的にパーセントエンコードし、非予約文字(英字、数字、ハイフン、アンダースコア、ドット、チルダ)を表すパーセントエンコードされた文字列をデコードします。それ以外の文字はすべて元の形式のまま残されます。
パーサーモードparsingMode を使用して、url を解析します。TolerantMode (デフォルト)では、QUrl は特定の誤り(特に、2 桁の 16 進数に続かないパーセント記号 ('%') の存在など)を修正し、どの位置にある文字でも受け入れます。StrictMode では、エンコーディングの誤りは許容されず、QUrlは特定の禁止文字がエンコードされていない状態で含まれていないかについてもチェックします。StrictMode でエラーが検出された場合、isValid()はfalseを返します。このコンテキストでは、解析モードDecodedMode は使用できません。
例:
QUrl url("http://www.example.com/List of holidays.xml");
// url.toEncoded() == "http://www.example.com/List%20of%20holidays.xml"エンコードされた文字列からURLを構築するには、fromEncoded()を使用することもできます:
どちらの関数も同等の機能を持ち、Qt 5 ではどちらもエンコードされたデータを受け入れます。通常、QUrl コンストラクタまたはsetUrl() とfromEncoded() のどちらを使用するかは、ソースデータによって決まります。コンストラクタとsetUrl() はQString を受け取りますが、fromEncoded はQByteArray を受け取ります。
setUrl()、fromEncoded()、およびTolerantModeも参照してください 。
[noexcept] QUrl::QUrl(const QUrl &other)
other のコピーを作成します。
[noexcept] QUrl::QUrl(QUrl &&other)
QUrlインスタンスをムーブコンストラクトし、other が指していたのと同じオブジェクトを指すようにします。
[noexcept] QUrl::~QUrl()
デストラクタ。オブジェクトが削除される直前に呼び出されます。
QUrl QUrl::adjusted(QUrl::FormattingOptions options) const
調整済みのURLを返します。options にフラグを渡すことで、出力をカスタマイズできます。
QUrl::ComponentFormattingOption のエンコーディングオプションは、このメソッドではあまり意味を成しません。QUrl::PreferLocalFile も同様です。
これは常に `QUrl(url.toString(options))` と同等です。
FormattingOptions 、toEncoded()、およびtoString()も参照してください 。
QString QUrl::authority(QUrl::ComponentFormattingOptions options = PrettyDecoded) const
URL に権限が定義されている場合はその権限を返し、定義されていない場合は空文字列を返します。
この関数は、曖昧さのない値を返します。この値には、依然としてパーセントエンコードされた文字や、QString でデコードされた形式では表現できない一部の制御シーケンスが含まれる場合があります。
options 引数は、ユーザー情報コンポーネントのフォーマット方法を制御します。この関数では、QUrl::FullyDecoded の値は使用できません。完全にデコードされたデータを取得する必要がある場合は、userName()、password()、host()、およびport()を個別に呼び出してください。
setAuthority()、userInfo()、userName()、password()、host()、およびport()も参照してください 。
void QUrl::clear()
QUrl の内容をリセットします。この関数を呼び出した後、QUrl は、デフォルトの空コンストラクタで生成されたものと同じ状態になります。
isEmpty()も参照してください 。
QString QUrl::errorString() const
このQUrl オブジェクトを最後に変更した操作で構文解析エラーが発生した場合、エラーメッセージを返します。エラーが検出されなかった場合、この関数は空の文字列を返し、isValid()はtrue を返します。
この関数が返すエラーメッセージは技術的なものであり、エンドユーザーには理解できない場合があります。主に、QUrl が特定の入力を受け付けない理由を理解しようとする開発者にとって有用です。
QUrl::ParsingModeも参照してください 。
QString QUrl::fileName(QUrl::ComponentFormattingOptions options = FullyDecoded) const
ディレクトリパスを除いたファイル名を返します。
なお、このQUrl オブジェクトにスラッシュで終わるパスが指定された場合、ファイル名は空とみなされます。
パスにスラッシュが含まれていない場合は、そのパス全体が fileName として返されます。
例:
QUrl url("http://qt-project.org/support/file.html");
// url.adjusted(RemoveFilename) == "http://qt-project.org/support/"
// url.fileName() == "file.html"options 引数は、ファイル名コンポーネントのフォーマット方法を制御します。どの値を使用しても、曖昧さのない結果が得られます。QUrl::FullyDecoded を指定すると、すべてのパーセントエンコードされた文字列がデコードされます。それ以外の場合、QString でデコードされた形式で表現できない一部の制御シーケンスに対して、返される値にパーセントエンコードされた文字列が含まれることがあります。
path()も参照してください 。
QString QUrl::fragment(QUrl::ComponentFormattingOptions options = PrettyDecoded) const
URLのフラグメントを返します。解析されたURLにフラグメントが含まれているかどうかを確認するには、hasFragment() を使用してください。
options 引数は、フラグメント部分のフォーマット方法を制御します。どの値を使用しても、曖昧さのない結果が得られます。QUrl::FullyDecoded を指定すると、すべてのパーセントエンコードされたシーケンスがデコードされます。それ以外の場合、QString でデコード形式で表現できない一部の制御シーケンスに対して、返される値にパーセントエンコードされたシーケンスが含まれる可能性があります。
なお、QUrl::FullyDecoded を指定すると、表現不可能なシーケンスが存在する場合、データが失われる可能性があります。この値は、結果が URL 以外のコンテキストで使用される場合に使用することを推奨します。
setFragment() およびhasFragment()も参照してください 。
[static, since 6.3] QString QUrl::fromAce(const QByteArray &domain, QUrl::AceProcessingOptions options = {})
指定されたドメイン名domain のUnicode形式を返します。このドメイン名はASCII互換エンコーディング(ACE)でエンコードされています。options にフラグを渡すことで、出力をカスタマイズできます。この関数の結果は、domain と同等とみなされます。
domain の値がエンコードできない場合、その値はQString に変換されて返されます。
ASCII互換エンコーディング(ACE)は、RFC 3490、RFC 3491、およびRFC 3492で定義されており、Unicode Technical Standard #46によって更新されています。 これは、アプリケーションにおけるドメイン名の国際化 (IDNA) 仕様の一部であり、これにより、"example.com" のようなドメイン名を非 US-ASCII 文字を使用して記述することが可能になります。
この関数は Qt 6.3 で導入されました。
[static] QUrl QUrl::fromCFURL(CFURLRef url)
CFURLurl のコピーを含む `QUrl ` オブジェクトを作成します。
[static] QUrl QUrl::fromEncoded(QByteArrayView input, QUrl::ParsingMode mode = TolerantMode)
input を解析し、対応するQUrl を返します。input はエンコードされた形式であり、ASCII 文字のみが含まれているものとみなされます。
mode を使用して URL を解析します。このパラメータの詳細については、setUrl() を参照してください。このコンテキストでは、QUrl::DecodedMode は使用できません。
注: Qt 6.7以前のバージョンでは 、この関数はQByteArrayView ではなくQByteArray を受け取っていました。コンパイルエラーが発生する場合は、コードがQByteArray には暗黙的に変換可能だが、QByteArrayView には変換不可能なオブジェクトを渡していることが原因です。対応する引数をQByteArray{~~~} でラップして、型変換を明示的に行ってください。これにより、古い Qt バージョンとの下位互換性が保たれます。
toEncoded() およびsetUrl()も参照してください 。
[static] QUrl QUrl::fromLocalFile(const QString &localFile)
localFile をローカルファイルとして解釈した、QUrl 形式の表現を返します。この関数は、スラッシュで区切られたパスだけでなく、そのプラットフォーム固有の区切り文字で区切られたパスも受け付けます。
また、この関数は、リモートファイルを示すために先頭にスラッシュ(またはバックスラッシュ)が2つ並んだパス(例:「//servername/path/to/file.txt」)も受け付けます。なお、QFile::open() を使用して実際にこのファイルを開くことができるのは、特定のプラットフォームに限られることに注意してください。
localFile が空の場合、URL は空になります(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上記のコードスニペットの 1 行目では、ローカルの相対パスからファイル URL が生成されています。相対パスを含むファイル URL が意味を持つのは、それを解決するためのベース URL が存在する場合に限られます。例えば:
QUrl url=QUrl::fromLocalFile("file.txt");
QUrl baseUrl=QUrl("file:/home/user/");
// 誤り:urlにはすでにスキーマが含まれているため、QUrl("file:file.txt")が出力される
qDebug() << baseUrl.resolved(url);このようなURLを解決するには、あらかじめスキームを削除する必要があります:
// 正しい例: QUrl("file:///home/user/file.txt") を出力する
url.setScheme(QString());
qDebug() << baseUrl.resolved(url);このため、相対ファイルパスには相対URL(つまり、スキームを指定しない形式)を使用することをお勧めします:
QUrl url=QUrl("file.txt");
QUrl baseUrl=QUrl("file:/home/user/");
// QUrl("file:///home/user/file.txt") を出力します
qDebug() << baseUrl.resolved(url);toLocalFile()、isLocalFile()、およびQDir::toNativeSeparators()も参照してください 。
[static] QUrl QUrl::fromNSURL(const NSURL *url)
NSURLurl のコピーを含むQUrl を生成します。
[static] QString QUrl::fromPercentEncoding(const QByteArray &input)
input のデコード済みコピーを返します。input は、まずパーセントエンコーディングからデコードされ、その後UTF-8からUnicodeに変換されます。
注: 無効な入力(たとえば、有効な16進数ではない「%G5」という文字列を含む場合など)が与えられた場合 、出力も無効になります。例として、「%G5」という文字列は 'W' にデコードされる可能性があります。
[static] QList<QUrl> QUrl::fromStringList(const QStringList &urls, QUrl::ParsingMode mode = TolerantMode)
QUrl (str,mode )を使用して、urls を表す文字列のリストを URL のリストに変換します。なお、これはすべての文字列が URL でなければならないことを意味し、例えばローカルパスなどは含まれません。
[static] QUrl QUrl::fromUserInput(const QString &userInput, const QString &workingDirectory = QString(), QUrl::UserInputResolutionOptions options = DefaultResolution)
ユーザーが指定したuserInput 文字列から、有効なURLを導き出せる場合はそれを返します。導き出せない場合は、無効なQUrl()を返します。
これにより、ユーザーはURLやローカルファイルのパスをプレーン文字列の形式で入力できるようになります。この文字列は、アドレスバーに手動で入力したり、クリップボードから取得したり、コマンドライン引数として渡したりすることができます。
文字列がまだ有効なURLでない場合、さまざまな仮定に基づいて最適な推測が行われます。
文字列がシステム上の有効なファイルパスに対応している場合、QUrl::fromLocalFile() を使用して file:// URL が構築されます。
そうでない場合は、その文字列を http:// または ftp:// URL に変換しようと試みます。後者は、文字列が 'ftp' で始まる場合に適用されます。その結果はQUrl の許容性の高いパーサーに渡され、成功した場合は有効なQUrl が返され、失敗した場合はQUrl() が返されます。
例:
- qt-project.org は http://qt-project.org になります
- ftp.qt-project.org は ftp://ftp.qt-project.org になります
- hostname は http://hostname になります
- /home/user/test.html は file:///home/user/test.html になります
相対パスを処理できるようにするため、このメソッドはオプションのworkingDirectory パスを引数として受け取ります。これは特に、コマンドライン引数を扱う際に役立ちます。workingDirectory が空の場合、相対パスの処理は行われません。
デフォルトでは、相対パスのように見える入力文字列は、指定された作業ディレクトリにファイルが実際に存在する場合にのみ、相対パスとして扱われます。アプリケーションがまだ存在しないファイルを処理できる場合は、options にAssumeLocalFile フラグを指定する必要があります。
bool QUrl::hasFragment() const
このURLにフラグメントが含まれている場合(つまり、URL内に「#」が含まれている場合)、true を返します。
fragment() およびsetFragment()も参照してください 。
bool QUrl::hasQuery() const
このURLにクエリが含まれている場合(つまり、URL内に「?」が見られた場合)、true を返します。
setQuery()、query()、およびhasFragment()も参照してください 。
QString QUrl::host(QUrl::ComponentFormattingOptions options = FullyDecoded) const
URL が定義されている場合はそのホスト名を返します。定義されていない場合は空の文字列が返されます。
options 引数は、ホスト名の書式を制御します。QUrl::EncodeUnicode オプションを指定すると、この関数はホスト名を ASCII-Compatible Encoding (ACE) 形式で返します。これは、8 ビットクリーンではないチャネルや、レガシーなホスト名を必要とするチャネル(DNS 要求や HTTP リクエストヘッダーなど)での使用に適しています。 このフラグが指定されていない場合、この関数は、許可されたトップレベルドメインのリスト(idnWhitelist() を参照)に従って、Unicode 形式の国際ドメイン名 (IDN) を返します。
その他のフラグはすべて無視されます。ホスト名には制御文字やパーセント記号を含めることはできないため、返される値は完全にデコードされたものとみなすことができます。
setHost()、idnWhitelist()、setIdnWhitelist()、およびauthority()も参照してください 。
[static] QStringList QUrl::idnWhitelist()
構成に非ASCII文字を含めることが許可されているトップレベルドメインの現在のホワイトリストを返します。
このリストの根拠については、setIdnWhitelist() を参照してください。
setIdnWhitelist() およびAceProcessingOptionも参照してください 。
bool QUrl::isEmpty() const
URLにデータが含まれていない場合は `true ` を返し、それ以外の場合は `false` を返します。
clear()も参照してください 。
bool QUrl::isLocalFile() const
このURLがローカルファイルパスを指している場合、true を返します。スキームが「file」である場合、そのURLはローカルファイルパスとみなされます。
なお、この関数では、ホスト名を含む URL であっても、最終的にそのファイルパスがQFile::open() で開けない場合でも、ローカルファイルパスとして扱われることに注意してください。
fromLocalFile() およびtoLocalFile()も参照してください 。
bool QUrl::isParentOf(const QUrl &childUrl) const
このURLがchildUrl の親URLである場合、true を返します。childUrl は、2つのURLが同じスキームとオーソリティを持ち、かつこのURLのパスがchildUrl のパスの親である場合に、このURLの子URLとなります。
bool QUrl::isRelative() const
URLが相対URLの場合はtrue を返し、それ以外の場合はfalse を返します。URLのスキームが未定義の場合、そのURLは相対参照とみなされます。したがって、この関数はscheme()を呼び出すことと同等です。isEmpty()。
相対参照については、RFC 3986 のセクション 4.2 で定義されている。
Relative URLs vs Relative Pathsも参照のこと 。
bool QUrl::isValid() const
URLが空でなく、かつ有効な場合は `true ` を返し、そうでない場合は `false` を返します。
URL に対して適合性テストが実行されます。URL が有効であると判定されるためには、URL のすべての部分が URI 標準のエンコーディング規則に準拠している必要があります。
boolcheckUrl(constQUrl&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
このURLと指定されたurl の両方にoptions を適用した結果が等しい場合、true を返します。そうでない場合は、false を返します。
これは、両方の URL に対してadjusted(options) を呼び出し、結果の URL を比較することと同等ですが、処理が高速です。
QString QUrl::password(QUrl::ComponentFormattingOptions options = FullyDecoded) const
URLにパスワードが定義されている場合はそのパスワードを返し、定義されていない場合は空の文字列を返します。
options 引数は、ユーザー名部分のフォーマット方法を制御します。どの値を設定しても、結果に曖昧さは生じません。QUrl::FullyDecoded を指定すると、すべてのパーセントエンコードされたシーケンスがデコードされます。そうでない場合、QString ではデコード形式で表現できない一部の制御シーケンスに対して、返される値にパーセントエンコードされたシーケンスが含まれる可能性があります。
なお、QUrl::FullyDecoded を使用すると、表現不可能なシーケンスが存在する場合にデータが失われる可能性があることに注意してください。この値は、QAuthenticator での設定やログインのネゴシエーションなど、URL以外のコンテキストで結果が使用される場合に使用することを推奨します。
setPassword()も参照してください 。
QString QUrl::path(QUrl::ComponentFormattingOptions options = FullyDecoded) const
URLのパスを返します。
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"options 引数は、パス構成要素のフォーマット方法を制御します。どの値を設定しても、曖昧さのない結果が得られます。QUrl::FullyDecoded を指定すると、すべてのパーセントエンコードされた文字列がデコードされます。それ以外の場合、QString でデコードされた形式では表現できない一部の制御文字列に対して、返される値にパーセントエンコードされた文字列が含まれることがあります。
なお、QUrl::FullyDecoded を指定すると、表現不可能なシーケンスが存在する場合、データが失われる可能性があります。この値を使用するのは、FTPサーバーへの送信など、URL以外のコンテキストで結果が使用される場合を推奨します。
データ損失の例としては、Unicode以外のパーセントエンコードされたシーケンスが存在し、FullyDecoded (デフォルト)が使用された場合が挙げられます。
この例では、%FF は変換できないため、ある程度のデータ損失が生じます。
また、パスにサブ区切り記号(+ など)が含まれている場合にも、データ損失が発生する可能性があります:
その他のデコード例:
constQUrl 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"「setPath()」も参照してください 。
int QUrl::port(int defaultPort = -1) const
URLのポートを返します。ポートが指定されていない場合は、defaultPort を返します。
例:
QTcpSocket sock;
sock.connectToHost(url.host(), url.port(80));関連項目: setPort()。
QString QUrl::query(QUrl::ComponentFormattingOptions options = PrettyDecoded) const
クエリ文字列が存在する場合はそのURLのクエリ文字列を返し、存在しない場合は空の結果を返します。解析されたURLにクエリ文字列が含まれているかどうかを確認するには、hasQuery() を使用してください。
options 引数は、クエリコンポーネントのフォーマット方法を制御します。どの値を使用しても、曖昧さのない結果が得られます。QUrl::FullyDecoded を指定すると、すべてのパーセントエンコードされたシーケンスがデコードされます。それ以外の場合、QString ではデコード形式で表現できない一部の制御シーケンスについて、返される値にパーセントエンコードされたシーケンスが含まれる可能性があります。
なお、クエリ内での `QUrl::FullyDecoded ` の使用は推奨されません。クエリには、プラス記号('+')を表す「%2B」シーケンスなど、パーセントエンコードされたままにしておくべきデータが含まれている場合が多いためです。
setQuery() およびhasQuery()も参照してください 。
QUrl QUrl::resolved(const QUrl &relative) const
このURLとrelative を結合した結果を返します。このURLは、relative を絶対URLに変換するためのベースとして使用されます。
relative が相対 URL でない場合、この関数はrelative をそのまま返します。それ以外の場合は、2 つの URL のパスが結合され、次の例のように、ベース URL のスキーマとオーソリティを持ち、結合されたパスを備えた新しい URL が返されます:
QUrl baseUrl("http://qt.digia.com/Support/");
QUrl relativeUrl("../Product/Library/");
qDebug(qUtf8Printable(baseUrl.resolved(relativeUrl).toString()));
// 「http://qt.digia.com/Product/Library/」と出力される".." を引数として resolved() を呼び出すと、元のパスより 1 レベル上のディレクトリを持つQUrl が返されます。同様に、"../.." を引数として resolved() を呼び出すと、パスから 2 レベル分が削除されます。relative が "/" の場合、パスは "/" になります。
isRelative()も参照してください 。
QString QUrl::scheme() const
URL のスキームを返します。空の文字列が返された場合、スキームは未定義であり、その URL は相対 URL であることを意味します。
スキームには US-ASCII の英字または数字のみを含めることができます。つまり、エンコードを必要とする文字は含めることができません。また、スキームは常に小文字で返されます。
setScheme() およびisRelative()も参照してください 。
void QUrl::setAuthority(const QString &authority, QUrl::ParsingMode mode = TolerantMode)
URLのオーソリティを「authority 」に設定します。
URLのオーソリティとは、ユーザー情報、ホスト名、およびポートの組み合わせを指します。これらの要素はすべてオプションであるため、空のオーソリティも有効です。
ユーザー情報とホスト名は「@」で区切られ、ホスト名とポートは「:」で区切られます。ユーザー情報が空の場合、「@」は省略する必要があります。ただし、ポートが空の場合、余分な「:」が含まれていても許容されます。
以下の例は、有効なオーソリティ文字列を示しています:

authority のデータは、mode に従って解釈されます。StrictMode では、'%'文字の後に必ず2文字の16進数が続く必要があり、一部の文字(スペースを含む)はデコードされていない形式では使用できません。TolerantMode (デフォルト)では、すべての文字が未デコードの形式で受け入れられ、寛容なパーサーが、2つの16進文字が続かない余分な「%」を修正します。
この関数では、mode をQUrl::DecodedMode とすることはできません。完全にデコードされたデータを設定するには、setUserName()、setPassword()、setHost()、setPort() を個別に呼び出してください。
authority()、setUserInfo()、setHost()、およびsetPort()も参照してください 。
void QUrl::setFragment(const QString &fragment, QUrl::ParsingMode mode = TolerantMode)
URLのフラグメントをfragment に設定します。フラグメントとは、URLの最後の部分であり、「#」の後に文字列が続く形で表されます。これは通常、HTTPにおいて、ページ上の特定のリンクや位置を指すために使用されます:

フラグメントは、URLの「参照」と呼ばれることもあります。
QString()(nullのQString )を引数として渡すと、フラグメントが解除されます。QString ("")(空だがnullではないQString )を引数として渡すと、フラグメントが空文字列に設定されます(元のURLに「#」が1つだけあるかのように)。
fragment のデータは、mode に従って解釈されます。StrictMode では、'%'文字の後に必ず2文字の16進数が続く必要があり、一部の文字(スペースを含む)は未デコードの形式では使用できません。TolerantMode では、すべての文字が未デコードの形式で受け入れられ、寛容なパーサーが、2文字の16進数が続かない余分な'%'を修正します。DecodedMode では、「%」はそのままの文字として扱われ、エンコードされた文字は使用できません。
QUrl::DecodedMode URL 以外のデータソースからフラグメントを設定する場合、またはQUrl::FullyDecoded フォーマットオプションを指定してfragment() を呼び出して取得したフラグメントを使用する場合は、これを使用する必要があります。
fragment() およびhasFragment()も参照してください 。
void QUrl::setHost(const QString &host, QUrl::ParsingMode mode = DecodedMode)
URLのホストをhost に設定します。ホストはオーソリティの一部です。
host のデータは、mode に基づいて解釈されます。StrictMode では、'%' 文字の後に必ず 2 文字の 16 進数が続く必要があり、一部の文字(スペースを含む)はデコードされていない形式では使用できません。TolerantMode では、すべての文字がデコードされていない形式で受け入れられ、許容性の高いパーサーが、2 文字の 16 進数が続かない余分な '%' を修正します。DecodedMode では、「%」はそれ自体を表し、エンコードされた文字は使用できません。
いずれの場合も、解析結果は、国際化リソース識別子仕様(RFC 3987)によって修正された STD 3 の規則に準拠した有効なホスト名でなければならないことに注意してください。無効なホスト名は許可されず、isValid() の評価結果が false になります。
host() およびsetAuthority()も参照してください 。
[static] void QUrl::setIdnWhitelist(const QStringList &list)
ドメイン名に非ASCII文字の使用が許可されるトップレベルドメイン(TLD)のホワイトリストを、list の値に設定します。
なお、この関数を呼び出す場合は、idnWhitelist() にアクセスする可能性のあるスレッドを起動する前に実行する必要があります。
Qt には、国際化ドメイン名 (IDN) のサポートが公表されているインターネットのトップレベルドメインと、見た目が似ている文字(たとえば、ラテン文字の小文字「'a' 」と、ほとんどのフォントで視覚的に区別がつかないキリル文字の同等の文字)の間で混同が生じないことを保証するためのルールが記載されたデフォルトのリストが付属しています。
レジストラが新しいルールを公表するにつれて、このリストは定期的に更新されます。
この関数は、TLD を追加または削除するためにリストを操作する必要があるユーザー向けに提供されています。テスト以外の目的でこの関数の値を変更することは、ユーザーをセキュリティリスクにさらす可能性があるため、推奨されません。
idnWhitelist()も参照してください 。
void QUrl::setPassword(const QString &password, QUrl::ParsingMode mode = DecodedMode)
URLのパスワードをpassword に設定します。password は、setUserInfo()に記載されているように、URLの権限(authority)内のユーザー情報要素の一部です。
password のデータは、mode に基づいて解釈されます。StrictMode では、'%' 文字の直後に必ず 2 文字の 16 進数が続く必要があり、一部の文字(スペースを含む)はデコードされていない形式では使用できません。TolerantMode では、すべての文字がデコードされていない形式で受け入れられ、寛容なパーサーが 2 文字の 16 進数が続いていない不要な '%' を修正します。DecodedMode では、「%」はそのままの文字として扱われ、エンコードされた文字は使用できません。
QUrl::DecodedMode これは、URL ではないデータソース(ユーザーに表示されるパスワードダイアログや、QUrl::FullyDecoded フォーマットオプションを指定してpassword() を呼び出して取得したパスワードなど)からパスワードを設定する際に使用する必要があります。
password() およびsetUserInfo()も参照してください 。
void QUrl::setPath(const QString &path, QUrl::ParsingMode mode = DecodedMode)
URLのパスを `path` に設定します。パスとは、URLにおいて「authority」の直後からクエリ文字列の直前に至る部分のことです。

非階層型スキームの場合、パスは次の例のように、スキーム宣言の後に続くすべての内容となります:

path のデータは、mode に基づいて解釈されます。StrictMode では、'%' 文字の後に必ず 2 文字の 16 進数が続く必要があり、一部の文字(スペースを含む)は未デコードの形式では使用できません。TolerantMode では、すべての文字が未デコードの形式で受け入れられ、寛容なパーサーが 2 文字の 16 進数が続かない余分な '%' を修正します。DecodedMode では、「%」はそれ自体を表し、エンコードされた文字は使用できません。
QUrl::DecodedMode これは、ユーザーに表示されるダイアログや、QUrl::FullyDecoded フォーマットオプションを指定してpath()を呼び出して取得したパスなど、URLではないデータソースからパスを設定する際に使用する必要があります。
path()も参照してください 。
void QUrl::setPort(int port)
URLのポートをport に設定します。setAuthority()で説明されているように、ポートはURLの権限の一部です。
port 値は0から65535までの範囲でなければなりません。ポートを-1に設定すると、ポートが未指定であることを示します。
port()も参照してください 。
void QUrl::setQuery(const QString &query, QUrl::ParsingMode mode = TolerantMode)
URLのクエリ文字列を「query 」に設定します。
この関数は、キーと値のパターンに当てはまらないクエリ文字列を渡す必要がある場合や、QUrl で推奨されているものとは異なる方式で特殊文字をエンコードしているクエリ文字列を渡す必要がある場合に役立ちます。
query に QString()(QString の null 値)を渡すと、クエリは完全に解除されます。ただし、QString ("") を渡すと、元の URL に「?」が 1 つだけあるかのように、クエリは空の値に設定されます。
query のデータは、mode に従って解釈されます。StrictMode では、'%'文字の後に必ず2文字の16進数が続く必要があり、一部の文字(スペースを含む)は未デコードの形式では使用できません。TolerantMode では、すべての文字が未デコードの形式で受け入れられ、寛容なパーサーが、2文字の16進数が続かない余分な'%'を修正します。DecodedMode では、「%」はそのままの文字として扱われ、エンコードされた文字は使用できません。
クエリ文字列にはパーセントエンコードされたシーケンスが含まれることが多いため、DecodedMode の使用は推奨されません。注意すべき特別なシーケンスとして、プラス記号('+')があります。QUrl は、Webブラウザから送信されるHTMLフォームではスペースがプラス記号に変換されるのに対し、スペースをプラス記号に変換しません。 クエリ内で実際のプラス記号を表すには、通常「%2B」というシーケンスが使用されます。この関数は、TolerantMode またはStrictMode 内で「%2B」シーケンスをそのまま残します。
query() およびhasQuery()も参照してください 。
void QUrl::setQuery(const QUrlQuery &query)
URLのクエリ文字列をquery に設定します。
この関数は、QUrlQuery オブジェクトからクエリ文字列を再構築し、このQUrl オブジェクトに設定します。QUrlQuery にはすでに解析済みのデータが含まれているため、この関数には解析パラメータはありません。
これはオーバーロードされた関数です。
query() およびhasQuery()も参照してください 。
void QUrl::setScheme(const QString &scheme)
URLのスキームを `scheme` に設定します。スキームにはASCII文字のみを含めることができるため、入力に対して変換やデコードは行われません。また、スキームはASCII文字のアルファベットで始まる必要があります。
スキームは、URL の種類(またはプロトコル)を表します。これは、URL の先頭にある 1 文字以上の ASCII 文字によって表されます。
スキームはRFC 3986に厳密に準拠しています:scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
次の例は、スキーマが「ftp」であるURLを示しています:

スキームを設定するには、次の呼び出しを使用します:
QUrl url;
url.setScheme("ftp");スキームを空にすることも可能です。その場合、URLは相対パスとして解釈されます。
scheme() およびisRelative()も参照してください 。
void QUrl::setUrl(const QString &url, QUrl::ParsingMode parsingMode = TolerantMode)
url を解析し、このオブジェクトをその値に設定します。QUrl は、URL で使用が許可されていないすべての文字を自動的にパーセントエンコードし、予約されていない文字(英字、数字、ハイフン、アンダースコア、ドット、チルダ)を表すパーセントエンコードされた文字列をデコードします。それ以外の文字はすべて元のまま残されます。
url を、パーサーモードparsingMode を使用して解析します。TolerantMode (デフォルト)では、QUrl は特定の誤り(特に、2桁の16進数に続かないパーセント記号('%')の存在など)を修正し、どの位置にあるどの文字でも受け入れます。StrictMode では、エンコーディングの誤りは許容されず、QUrl は、特定の禁止文字がエンコードされていない形で含まれていないかどうかもチェックします。StrictMode でエラーが検出された場合、isValid() は false を返します。パーサーモードDecodedMode はこのコンテキストでは許可されておらず、実行時の警告が発生します。
url() およびtoString()も参照してください 。
void QUrl::setUserInfo(const QString &userInfo, QUrl::ParsingMode mode = TolerantMode)
URLのユーザー情報をuserInfo に設定します。ユーザー情報は、setAuthority()で説明されているように、URLの権限におけるオプションの部分です。
ユーザー情報は、ユーザー名と(任意の)パスワードで構成され、「:」で区切られます。パスワードが空の場合は、コロンを省略する必要があります。以下の例は、有効なユーザー情報文字列を示しています:

userInfo のデータは、mode に基づいて解釈されます。StrictMode では、'%' 文字の後に正確に 2 文字の 16 進数が続く必要があり、一部の文字(スペースを含む)はデコードされていない形式では使用できません。TolerantMode (デフォルト)では、すべての文字が未デコードの形式で受け入れられ、寛容なパーサーが、2 文字の 16 進数に続かない余分な '%' を修正します。
この関数では、mode をQUrl::DecodedMode とすることはできません。完全にデコードされたデータを設定するには、setUserName() とsetPassword() を個別に呼び出してください。
userInfo()、setUserName()、setPassword()、およびsetAuthority()も参照してください 。
void QUrl::setUserName(const QString &userName, QUrl::ParsingMode mode = DecodedMode)
URLのユーザー名をuserName に設定します。userName は、setUserInfo() に記載されているとおり、URLの権威(authority)内のuser info要素の一部です。
userName のデータは、mode に基づいて解釈されます。StrictMode では、'%' 文字の直後に必ず 2 文字の 16 進数が続く必要があり、一部の文字(スペースを含む)はデコードされていない形式では使用できません。TolerantMode (デフォルト)では、すべての文字が未エンコードの形で受け入れられ、寛容なパーサーが、2 文字の 16 進数に続かない余分な '%' を修正します。DecodedMode では、'%' はその文字自体を表し、エンコードされた文字は使用できません。
QUrl::DecodedMode この設定は、URL ではないデータソース(ユーザーに表示されるパスワードダイアログや、QUrl::FullyDecoded フォーマットオプションを指定してuserName() を呼び出した際に取得したユーザー名など)からユーザー名を設定する場合に使用すべきです。
userName() およびsetUserInfo()も参照してください 。
[noexcept] void QUrl::swap(QUrl &other)
このURLをother と置き換えます。この処理は非常に高速で、失敗することはありません。
[static, since 6.3] QByteArray QUrl::toAce(const QString &domain, QUrl::AceProcessingOptions options = {})
指定されたドメイン名 `domain` のASCII互換エンコーディングを返します。options にフラグを指定することで、出力をカスタマイズできます。この関数の結果は、`domain` と同等とみなされます。
ASCII互換エンコーディング(ACE)は、RFC 3490、RFC 3491、およびRFC 3492によって定義され、Unicode Technical Standard #46によって更新されています。 これは、アプリケーションにおけるドメイン名の国際化(IDNA)仕様の一部であり、これにより、"example.com" のようなドメイン名を非US-ASCII文字を使用して記述することが可能になります。
domain が有効なホスト名でない場合、この関数は空のQByteArray を返します。特に、IPv6 リテラルは有効なドメイン名ではないことに注意してください。
この関数は Qt 6.3 で導入されました。
CFURLRef QUrl::toCFURL() const
QUrl から CFURL を作成します。
CFURLの所有権は呼び出し元にあり、その解放も呼び出し元の責任となります。
QString QUrl::toDisplayString(QUrl::FormattingOptions options = FormattingOptions(PrettyDecoded)) const
URLを人間が読みやすい文字列形式で返します。options でフラグを指定することで、出力内容をカスタマイズできます。パスワードは決してユーザーに表示してはならないため、RemovePassword オプションは常に有効になっています。
デフォルトのオプションでは、結果として得られるQString を後でQUrl に再度渡すことができますが、当初含まれていたパスワードはすべて失われます。
FormattingOptions 、toEncoded()、およびtoString()も参照してください 。
QByteArray QUrl::toEncoded(QUrl::FormattingOptions options = FullyEncoded) const
URLが有効な場合は、そのエンコードされた表現を返します。そうでない場合は、空のQByteArray が返されます。options でフラグを渡すことで、出力をカスタマイズできます。
ユーザー情報、パス、フラグメントはすべてUTF-8に変換され、非ASCII文字はすべてパーセントエンコードされます。ホスト名はPunycodeを使用してエンコードされます。
QString QUrl::toLocalFile() const
このURLのパスを、ローカルファイルパスとしてフォーマットして返します。返されるパスには、元のURLがバックスラッシュで構成されていた場合でも、スラッシュが使用されます。
このURLにホスト名が含まれている場合、SMBネットワークで用いられる形式(例: "//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注:このURLのパス部分にUTF-8以外のバイナリシーケンス(%80など)が含まれている場合、この関数の動作は未定義となります。
fromLocalFile() およびisLocalFile()も参照してください 。
NSURL *QUrl::toNSURL() const
QUrl から NSURL を作成します。
NSURLはオートリリースされます。
[static] QByteArray QUrl::toPercentEncoding(const QString &input, const QByteArray &exclude = QByteArray(), const QByteArray &include = QByteArray())
input のエンコード済みコピーを返します。input はまずUTF-8に変換され、非予約グループに含まれないすべてのASCII文字はパーセントエンコードされます。文字がパーセントエンコードされないようにするには、それらをexclude に渡してください。文字を強制的にパーセントエンコードするには、それらをinclude に渡してください。
「非予約」は次のように定義されます:ALPHA / DIGIT / "-" / "." / "_" / "~"
QByteArray ba=QUrl::toPercentEncoding("{a fishy string?}", "{}", "s");
qDebug(ba.constData());
// 「{a fi%73hy %73tring%3F}」と出力するQString QUrl::toString(QUrl::FormattingOptions options = FormattingOptions(PrettyDecoded)) const
URL を文字列として返します。options を使用してフラグを渡すことで、出力をカスタマイズできます。QUrl::FullyDecoded オプションは、曖昧なデータを生成してしまうため、この関数では使用できません。
デフォルトの書式設定オプションは `PrettyDecoded` です。
FormattingOptions 、url()、およびsetUrl()も参照してください 。
[static] QStringList QUrl::toStringList(const QList<QUrl> &urls, QUrl::FormattingOptions options = FormattingOptions(PrettyDecoded))
toString (options )を使用して、urls のリストをQString オブジェクトのリストに変換します。
QString QUrl::url(QUrl::FormattingOptions options = FormattingOptions(PrettyDecoded)) const
URLの文字列表現を返します。options でフラグを渡すことで、出力をカスタマイズできます。QUrl::FullyDecoded オプションは、曖昧なデータを生成してしまうため、この関数では使用できません。
結果として得られたQString は、後でQUrl に再度渡すことができます。
toString(options) の別名です。
setUrl()、FormattingOptions 、toEncoded()、およびtoString()も参照してください 。
QString QUrl::userInfo(QUrl::ComponentFormattingOptions options = PrettyDecoded) const
URL のユーザー情報を返します。ユーザー情報が未定義の場合は、空の文字列を返します。
この関数は、曖昧さのない値を返します。この値には、依然としてパーセントエンコードされた文字や、QString でデコードされた形式では表現できない一部の制御シーケンスが含まれる場合があります。
options 引数は、ユーザー情報コンポーネントのフォーマット方法を制御します。この関数では、QUrl::FullyDecoded の値は許可されていません。完全にデコードされたデータを取得する必要がある場合は、userName()とpassword()を個別に呼び出してください。
setUserInfo()、userName()、password()、およびauthority()も参照してください 。
QString QUrl::userName(QUrl::ComponentFormattingOptions options = FullyDecoded) const
URLにユーザー名が定義されている場合はそのユーザー名を返し、定義されていない場合は空の文字列を返します。
options 引数は、ユーザー名コンポーネントのフォーマット方法を制御します。どの値を設定しても、結果に曖昧さは生じません。QUrl::FullyDecoded を指定すると、すべてのパーセントエンコードされたシーケンスがデコードされます。それ以外の場合、QString でデコードされた形式では表現できない一部の制御シーケンスに対して、返される値にパーセントエンコードされたシーケンスが含まれる可能性があります。
なお、QUrl::FullyDecoded を使用すると、表現不可能なシーケンスが存在する場合にデータが失われる可能性があることに注意してください。この値は、QAuthenticator での設定やログインのネゴシエーションなど、URL以外のコンテキストで結果が使用される場合に使用することを推奨します。
setUserName() およびuserInfo()も参照してください 。
[noexcept] QUrl &QUrl::operator=(QUrl &&other)
other をこのQUrl インスタンスに割り当てます。
QUrl &QUrl::operator=(const QString &url)
指定されたurl をこのオブジェクトに割り当てます。
QT_NO_URL_CAST_FROM_STRING マクロが定義されている場合、この演算子は使用できません。
[noexcept] QUrl &QUrl::operator=(const QUrl &url)
指定されたurl をこのオブジェクトに割り当てます。
関連する非メンバー
[noexcept] bool operator!=(const QUrl &lhs, const QUrl &rhs)
lhs とrhs の URL が等しくない場合はtrue を返し、等しい場合はfalse を返します。
matches()も参照してください 。
QDataStream &operator<<(QDataStream &out, const QUrl &url)
URLurl をストリームout に書き込み、そのストリームへの参照を返します。
「QDataStream 演算子の形式」も参照してください 。
[noexcept] bool operator==(const QUrl &lhs, const QUrl &rhs)
lhs とrhs の URL が等価であれば、true を返します。そうでない場合は、false を返します。
matches()も参照してください 。
QDataStream &operator>>(QDataStream &in, QUrl &url)
ストリーム `in ` から URL を `url ` に読み込み、そのストリームへの参照を返します。
「QDataStream 演算子の形式」も参照してください 。
マクロのドキュメント
QT_NO_URL_CAST_FROM_STRING
QString (または char *)からQUrl への自動変換を無効にします。
この定義を使用してコードをコンパイルすると、ファイル名にQString を使用しているコードが多く、ネットワークの透過性を確保するためにQUrl を使用するように変換したい場合に役立ちます。QUrl を使用するコードでは、QUrl::resolved()の呼び出し漏れや、QString からQUrl への変換の誤用を防ぐのに役立ちます。
たとえば、次のようなコードがある場合
url = filename; // probably not what you want次のように書き換えることができます。
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.