QUrl Class
QUrlクラスは、URLを扱うための便利なインターフェイスを提供します。さらに...
ヘッダー | #include <QUrl> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- 継承メンバを含む全メンバ一覧
- QUrl はInput/Output and Networking,Network Programming API,Implicitly Shared Classes に含まれます。
このクラスは弱く比較可能です。
注意:このクラスの関数はすべてリエントラントです。
パブリック型
(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) |
マクロ
詳細説明
QUrlは、エンコードされたURLとエンコードされていないURLの両方を解析し、構築することができます。QUrlは国際化ドメイン名(IDN)もサポートしています。
QUrlを使用する最も一般的な方法は、完全なURLを含むQString 、コンストラクタで初期化することです。QUrlオブジェクトは、QUrl::fromEncoded ()を使用して完全なURLを含むQByteArray 、またはQUrl::fromUserInput ()を使用して不完全なURLから発見的に作成することもできます。URL表現は、QUrl::toString ()またはQUrl::toEncoded ()を使用して、QUrlから取得することができる。
URLは、エンコードまたは非エンコードの2つの形式で表現できる。エンコードされていない表現はユーザーに見せるのに適していますが、エンコードされた表現は一般的にウェブ・サーバーに送るものです。例えば、エンコードされていないURL「http://bühler.example.com/List of applicants.xml」は、「http://xn-bhler-kva.example.com/List%20of%20applicants.xml」としてサーバーに送信されます。
URLは、setScheme ()、setUserName ()、setPassword ()、setHost ()、setPort ()、setPath ()、setQuery ()、setFragment ()を呼び出すことによって、1つ1つ構築することもできます。setAuthority() は、ユーザー名、パスワード、ホスト、およびポートを設定する。setUserInfo() は、ユーザー名とパスワードを一度に設定します。
URL が有効かどうかを調べるには、isValid ()を呼び出す。これは、URLの作成中であればいつでも実行できる。isValid() がfalse
を返した場合は、先に進む前に URL をclear() するか、setUrl() で新しい URL を解析してやり直す必要がある。
クエリの構築は、QUrlQuery クラスとそのメソッドQUrlQuery::setQueryItems()、QUrlQuery::addQueryItem()、QUrlQuery::removeQueryItem() を使用すると特に便利である。クエリー文字列の生成に使用する区切り文字をカスタマイズするには、QUrlQuery::setQueryDelimiters() を使用します。
エンコードされたURL文字列やクエリ文字列を生成するのに便利なように、fromPercentEncoding() とtoPercentEncoding() という2つの静的関数が用意されており、QString オブジェクトのパーセント・エンコーディングとデコーディングを行います。
fromLocalFile() は、ローカルのファイルパスを解析してQUrlを構築します。toLocalFile() は、URLをローカル・ファイル・パスに変換する。
URLの人間が読める表現は、toString()で取得される。この表現は、エンコードされていない状態でユーザーにURLを表示するのに適している。一方、toEncoded ()で返されるエンコードされた形式は、ウェブサーバーやメールクライアントなどに渡す内部的な使用向けである。実際、QUrlのコンストラクタやsetUrl ()にどちらの形式を渡しても、同じQUrlオブジェクトが得られます。
QUrlは、RFC 3986(Uniform Resource Identifier: Generic Syntax)のURI仕様に準拠し、RFC 1738(Uniform Resource Locators)のスキーム拡張を含んでいます。QUrlの大文字小文字の折りたたみルールはRFC 3491(Nameprep:A Stringprep Profile for Internationalized Domain Names (IDN))に準拠しています。また、freedesktop.orgのファイルURI仕様とも互換性があります。ただし、ロケールがファイル名をUTF-8(IDNで必須)でエンコードしている場合に限ります。
相対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" scheme
URLは絶対パスでありながら相対パスを含むことができる:
// 絶対URL、相対パス QUrlurl("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は、絶対URLを返すresolved()に引数として渡すことで解決できる。isParentOf() は、あるURLが別のURLの親であるかどうかを判断するために使用されます。
エラーチェック
QUrlは、URLの解析時や、URLの構成要素が個々のセッター・メソッド(setScheme()、setHost()、setPath()など)で設定される際に、URLの多くのエラーを検出することができます。解析またはセッター関数が成功した場合、以前に記録されたエラー状態はすべて破棄されます。
デフォルトでは、QUrlのセッター・メソッドはQUrl::TolerantMode で動作します。これは、よくある間違いやデータの間違った表現を受け入れることを意味します。別の解析方法として、QUrl::StrictMode があり、これはさらなるチェックを行う。構文解析モードの違いについてはQUrl::ParsingMode を参照してください。
QUrlはURL仕様への適合性のみをチェックします。QUrlは、高レベルプロトコルの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() を使用する。
メンバー型ドキュメント
[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 コードポイントの "%C3%A9" や LATIN SMALL LETTER E WITH ACUTE)。 |
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 形式で、toEncoded() の結果と全く等しい、完全に準拠した URL が生成される。 |
QUrl::FullyDecoded | FullyEncoded | DecodeReserved | 0x4000000 | 可能な限りデコードを試みる。URLの各コンポーネントについて、パーセントエンコード形式で見つかった制御文字(U+0000からU+001F)やUTF-8シーケンスを含む、すべてのパーセントエンコードシーケンスをデコードします。このモードを使用すると、データが失われることがあります。 |
EncodeReservedとDecodeReservedの値は、1回の呼び出しで一緒に使用しないでください。その場合の動作は未定義である。予約文字に関する "pretty mode "の動作は、特定のコンポーネントや完全なURL上で特別に異なるため、これらは別々の値として提供されています。
完全なデコード
FullyDecodedモードは、Qt 4.xでQString を返す関数の動作に似ています。つまり、すべての文字はそれ自身を表し、特別な意味を持つことはありません。これはパーセント文字('%')にも当てはまり、パーセントエンコードされたシーケンスの始まりではなく、リテラルパーセントを意味すると解釈されるべきです。他のすべてのデコード・モードでは、同じ実際の文字は"%25 "というシーケンスで表される。
QUrl::FullyDecodedで取得したデータをQUrl に再適用する場合、setPath()やsetUserName()のようなセッターにQUrl::DecodedMode パラメータを使用するように注意しなければならない。そうしないと、パーセント文字('%')をパーセント・エンコードされたシーケンスの開始として再解釈してしまう可能性があります。
このモードは、URLの一部がURL以外のコンテキストで使用される場合に非常に便利です。例えば、FTPクライアントアプリケーションでユーザー名、パスワード、ファイルパスを抽出する場合は、FullyDecodedモードを使用する必要があります。
このモードの使用には注意が必要である。なぜなら、返されるQString には、確実に表現できない2つの条件があるからである。それらは以下のとおりである:
- 非UTF-8シーケンス:非UTF-8シーケンス:URLは、有効なUTF-8シーケンスを形成しないパーセントエンコードされた文字のシーケンスを含む可能性があります。URLはUTF-8を使用してデコードされる必要があるため、デコーダーが失敗すると、QString 、そのシーケンスが存在した場所に1つ以上の置換文字が含まれることになる。
- エンコードされた区切り文字:URLは、リテラル形式の区切り文字とパーセントエンコード形式の同等の区切り文字を区別することも許されています。これはクエリの中で最もよく見られるが、URLのほとんどの部分で許可されている。
次の例はこの問題を示しています:
QUrloriginal("http://example.com/?q=a%2B%3Db%26c"); QUrlcopy(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で使用された場合、ウェブサーバーによる解釈はおそらく異なるだろう。最初のケースでは、"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 "に置き換えられます。1つだけ"%"文字があると、すべてのパーセント文字の修正モードが起動することに注意してください。
- 予約文字と未予約文字:エンコードされたURLは、リテラルとしていくつかの文字だけを含むべきです。TolerantModeでは、これらの文字がURL中に見つかった場合、受け入れることができます:スペース / ダブルクォート / "<" / ">" / "" / "^" / "`"/ "{" / "|"/ "}"これらの同じ文字は、toString() またはtoEncoded() にQUrl::DecodeReserved を渡すことで、再度デコードすることができる。個々のコンポーネントのゲッターでは、これらの文字はしばしばデコードされた形で返される。
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 | |
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-Referenceを期待し、意図を推測しようとしないことに注意。例えば、次のように宣言します:
QUrl url("example.com");
有効なURLは構築されるが、入力のscheme()の部分が欠落しているため、期待するものとは異なる可能性がある。上記のような文字列の場合、アプリケーションはfromUserInput() を使用する。このコンストラクタやsetUrl ()については、おそらく次のようなものが意図されたものでしょう:
QUrl url("https://example.com");
QUrlは、URLで許可されていないすべての文字を自動的にパーセントエンコードし、予約されていない文字(文字、数字、ハイフン、アンダースコア、ドット、チルダ)を表すパーセントエンコードされたシーケンスをデコードします。それ以外の文字はそのままの形で残す。
パーサーモードparsingMode を使ってurl を解析する。TolerantMode (デフォルト)では、QUrlは特定の間違い、特に16進数2桁が続かないパーセント文字('%')の存在を修正します。StrictMode では、エンコードの間違いは許されず、QUrlはある種の禁じられた文字がエンコードされていない形で存在しないこともチェックします。StrictMode でエラーが検出された場合、isValid() は偽を返す。構文解析モード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)
Move-QUrlインスタンスを構築し、other が指していたのと同じオブジェクトを指すようにする。
[noexcept]
QUrl::~QUrl()
オブジェクトが削除される直前に呼び出される。
QUrl QUrl::adjusted(QUrl::FormattingOptions options) const
URLの調整バージョンを返す。options でフラグを渡すことで、出力をカスタマイズできる。
QUrl::ComponentFormattingOption のエンコーディングオプションは、このメソッドではあまり意味をなさない。QUrl::PreferLocalFile も同様である。
これは常にQUrl(url.toString(オプション)) と等価です。
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 = {})
ASCII Compatible Encoding (ACE) でエンコードされた、与えられたドメイン名domain の Unicode 形式を返します。options でフラグを渡すことで、出力をカスタマイズすることができます。この関数の結果はdomain と等価とみなされる。
domain の値がエンコードできない場合は、QString に変換されて返されます。
ASCII-Compatible Encoding (ACE)は、RFC 3490、RFC 3491、RFC 3492で定義され、Unicode Technical Standard #46で更新されています。これはIDNA(Internationalizing Domain Names in Applications)仕様の一部であり、ドメイン名("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 表現を返す。この関数は、スラッシュで区切られたパスと、このプラットフォームのネイティブなセパレータを受け付ける。
この関数は、"//servername/path/to/file.txt" のように、リモート・ファイルを示すスラッシュ(またはバックスラッシュ)を先頭に2つ付けたパスも受け付ける。なお、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がある場合にのみ意味を持ちます。例えば
QUrlurl=QUrl::fromLocalFile("file.txt"); QUrlbaseUrl=QUrl("file:/home/user/");// 誤り:QUrl("file:file.txt")を出力する。 qDebug() << baseUrl.resolved(url);
このようなURLを解決するには、事前にスキームを削除する必要がある:
// 正解:QUrl("file:///home/user/file.txt")を表示するurl.setScheme(QString()); qDebug() << baseUrl.resolved(url);
このため、相対ファイルパスには相対URL(つまりスキームなし)を使う方がよい:
QUrlurl=QUrl("file.txt"); QUrlbaseUrl=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 からユニコードに変換される。
注意: 無効な入力(有効な16進数ではない"%G5 "というシーケンスを含む文字列など)が与えられた場合、出力も同様に無効となる。例:シーケンス"%G5 "は'W'にデコードされる可能性がある。
[static]
QList<QUrl> QUrl::fromStringList(const QStringList &urls, QUrl::ParsingMode mode = TolerantMode)
urls を表す文字列のリストを、QUrl(str,mode) を使って URL のリストに変換する。これは、すべての文字列が、例えばローカルパスではなく、URLでなければならないことを意味することに注意してください。
[static]
QUrl QUrl::fromUserInput(const QString &userInput, const QString &workingDirectory = QString(), QUrl::UserInputResolutionOptions options = DefaultResolution)
ユーザが指定したuserInput 文字列から、有効な URL が推測できる場合、その 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 になります。
- ホスト名は http://hostname になります。
- /home/user/test.html は file:///home/user/test.html になります。
相対パスを扱えるようにするため、このメソッドはオプションでworkingDirectory 。これは、コマンドライン引数を扱うときに特に便利です。workingDirectory が空の場合、相対パスの処理は行われない。
デフォルトでは、相対パスのように見える入力文字列は、指定された作業ディレクトリにファイルが実際に存在する場合にのみ相対パスとして扱われます。アプリケーションがまだ存在しないファイルを処理できる場合は、options でフラグAssumeLocalFile を渡すべきである。
bool QUrl::hasFragment() const
このURLにフラグメントが含まれている場合(つまり#が表示されている場合)、true
を返す。
fragment() およびsetFragment()も参照 。
bool QUrl::hasQuery() const
このURLにQueryが含まれている場合(つまり、?が表示されている場合)、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はローカルファイルパスである。
QFile::openこの関数は、ホスト名を持つ URL をローカル・ファイル・パスとみなす。
fromLocalFile() およびtoLocalFile()も参照の こと。
bool QUrl::isParentOf(const QUrl &childUrl) const
この URL がchildUrl の親である場合、true
を返す。2 つの URL が同じスキームと権限を共有し、この URL のパスがchildUrl のパスの親である場合、childUrl はこの URL の子である。
bool QUrl::isRelative() const
URLが相対参照である場合はtrue
を返し、そうでない場合はfalse
を返す。スキームが未定義の場合、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()) {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
を変換できないため、ある程度のデータ損失があります。
この例では、+
が変換できないため、ある程度のデータロスが発生します。また、パスにサブデリミタ( など)が含まれている場合にも、データロスが発生する可能性があります:
その他のデコード例:
その他のデコード例 QUrlurl("/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 でデコードされた形では表現できない制御シーケンスに対するパーセントエンコードされたシーケンスが含まれる可能性がある。
クエリでは、プラス文字('+')を表現するための"%2B "シーケンスの使用など、パーセントエンコードされたままであることが想定されるデータが含まれることが多いため、クエリでのQUrl::FullyDecoded の使用は推奨されないことに注意してください。
setQuery() およびhasQuery()も参照の こと。
QUrl QUrl::resolved(const QUrl &relative) const
この URL をrelative とマージした結果を返す。このURLは、relative を絶対URLに変換するベースとして使用される。
relative が相対 URL でない場合、この関数はrelative を直接返す。そうでない場合は、2つのURLのパスがマージされ、以下の例のように、ベースURLのスキームとオーソリティを持ち、マージされたパスを持つ新しいURLが返されます:
QUrlbaseUrl("http://qt.digia.com/Support/");QUrlrelativeUrl("../Product/Library/");qDebug(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は、ユーザー情報、ホスト名、ポートの組み合わせである。これらの要素はすべてオプションです。したがって、空のオーソリティも有効です。
ユーザ情報とホストは「@」で区切られ、ホストとポートは「:」で区切られます。ユーザー情報が空の場合、'@'は省略しなければなりません。
次の例は、有効な権限文字列を示しています:
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()の引数(NULLQString)を渡すと、フラグメントの設定が解除されます。QString("") (空だがNULLではないQString) を引数に渡すと、フラグメントは空の文字列に設定される (あたかも元のURLに "#" があるかのように)。
fragment のデータは、mode に従って解釈される。StrictMode では、'%'文字の後には、16進数で正確に2つの文字が続かなければな らず、いくつかの文字(スペースを含む)は、デコードされていない形では許可されな い。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 では、'%'はそれ自身を表し、エンコードされた文字は使えない。
すべての場合において、構文解析の結果は、国際化資源識別子仕様(Internationalized Resource Identifiers specification) (RFC 3987)によって修正されたSTD 3の規則に従って、有効なホスト名でなければならないことに注意すること。無効なホスト名は許可されず、isValid()が偽になる。
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のオーソリティ内のユーザー情報要素の一部である。
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 のうち、オーソリティの後でクエリ文字列の前に来る部分です。
階層化されていないスキームの場合、パスは以下の例のようにスキーム宣言に続く全てになります:
path のデータは、mode に従って解釈されます。StrictMode では、'%'文字の後にちょうど2つの16進数文字が続く必要があり、いくつかの文字(スペースを含む)はデコードされていない状態では許可されません。TolerantMode では、すべての文字がデコードされない形で受け入れられ、寛容なパーサーは、2つの16進文字が続かない迷子の'%'を修正する。DecodedMode では、'%'はそれ自身を表し、エンコードされた文字は使えない。
QUrl::DecodedMode は、ユーザーに表示されるダイアログや、 フォーマット・オプションを指定して () を呼び出して取得したパスなど、URL ではないデータ・ソースからパスを設定する場合に使用する必要があります。QUrl::FullyDecoded path
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 に設定する。
この関数は、key-valueパターンに収まらないクエリ文字列を渡す必要がある場合や、QUrl で提案されているものとは異なるスキームで特殊文字をエンコードする場合に便利です。
query に QString() の値(NULLQString )を渡すと、クエリは完全にアンセットされます。しかし、QString ("")の値を渡すと、元のURLに"? "があるかのように、クエリが空の値に設定されます。
query のデータは、mode に従って解釈される。StrictMode では、'%'文字の後に16進数で正確に2文字続く必要があり、いくつかの文字 (スペースを含む)は、デコードされていない状態では許可されない。TolerantMode では、すべての文字がデコードされない形で受け入れられ、寛容なパーサーは、2つの16進文字が続かない迷子の'%'を修正する。DecodedMode では、'%'はそれ自身を表し、エンコードされた文字は使用できません。
クエリー文字列はパーセントエンコードされたシーケンスを含むことが多いので、DecodedMode の使用は推奨されません。注意すべき特殊なシーケンスとして、プラス文字('+')があります。QUrl 、ウェブブラウザが投稿するHTMLフォームではプラス文字に変換されますが、スペースはプラス文字に変換されません。実際のプラス文字をクエリーで表現するには、通常"%2B "というシーケンスが使われます。この関数は、"%2B "シーケンスはTolerantMode やStrictMode ではそのままにする。
void QUrl::setQuery(const QUrlQuery &query)
これはオーバーロードされた関数である。
URL のクエリ文字列をquery に設定する。
この関数はQUrlQuery オブジェクトからクエリ文字列を再構築し、このQUrl オブジェクトに設定します。QUrlQuery にはすでに解析済みのデータが含まれているため、この関数には解析パラメータはありません。
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は相対 URLとして解釈される。
scheme() およびisRelative()も参照の こと。
void QUrl::setUrl(const QString &url, QUrl::ParsingMode parsingMode = TolerantMode)
url をパースし、このオブジェクトにその値をセットする。QUrl は、URLで許可されていないすべての文字を自動的にパーセントエンコードし、予約されていない文字(文字、数字、ハイフン、アンダースコア、ドット、チルダ)を表すパーセントエンコードされたシーケンスをデコードする。それ以外の文字はそのままの形で残す。
パーサーモードparsingMode を使ってurl を解析する。TolerantMode (デフォルト) では、QUrl は特定の間違い、特にパーセント文字 ('%') の後に 2 桁の 16 進数字が続かないような間違いを修正します。StrictMode では、エンコードの間違いは許されず、QUrl では、ある種の禁じられた文字がエンコードされていない形で存在しないこともチェックする。StrictMode でエラーが検出されると、isValid() は偽を返す。構文解析モードDecodedMode は、このコンテキストでは許可されず、実行時に警告が表示される。
void QUrl::setUserInfo(const QString &userInfo, QUrl::ParsingMode mode = TolerantMode)
URL のユーザー情報をuserInfo に設定する。 ユーザー情報は、setAuthority() で説明されているように、URL のオーソリティのオプション部分である。
ユーザ情報は、':'で区切られたユーザ名と、オプションでパスワードから構成される。パスワードが空の場合、コロンは省略しなければなりません。以下の例は、有効なユーザー情報文字列を示している:
userInfo のデータは、mode に従って解釈される。StrictMode では、'%'文字の後に16進数で正確に2文字続く必要があり、一部の文字(スペース を含む)はデコードされていない形式では許可されない。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 のオーソリティ内のユーザー情報要素の一部です。
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 = {})
与えられたドメイン名の ASCII 互換エンコードを返すdomain 。options でフラグを渡すことで、出力をカスタマイズすることができる。この関数の結果は、domain と同等とみなされる。
ASCII互換エンコーディング(ACE)は、RFC 3490、RFC 3491、RFC 3492で定義され、Unicode Technical Standard #46で更新されています。これは、アプリケーションにおけるドメイン名の国際化(Internationalizing Domain Names in Applications: 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に空でないホスト名が含まれている場合、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に変換され、unreserved グループにないすべてのASCII文字がパーセントエンコードされる。文字がパーセント符号化されないようにするには、その文字をexclude に渡します。 文字が強制的にパーセント符号化されるようにするには、その文字をinclude に渡します。
Unreservedは次のように定義される:ALPHA / DIGIT / "-" / "." / "_" / "~"
QByteArrayba=QUrl::toPercentEncoding("{あやしい文字列?}", "{}", "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(オプション)の同義語。
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)
Move-other をこのQUrl インスタンスに割り当てる。
QUrl &QUrl::operator=(const QString &url)
指定されたurl をこのオブジェクトに割り当てます。
[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も参照のこと 。
© 2025 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.