QUrl Class
QUrlクラスは、URLを扱うための便利なインターフェイスを提供します。詳細...
Header: | #include <QUrl> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- 継承メンバを含む全メンバ一覧
- QUrlは、入出力とネットワーキング、ネットワーク・プログラミングAPI、暗黙の共有クラスに属しています。
このクラスは弱く比較可能です。
注意:このクラスの関数はすべてリエントラントです。
パブリック型
(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文字列やクエリ文字列を簡単に生成するために、QString オブジェクトのパーセント・エンコーディングとデコーディングを行うfromPercentEncoding() とtoPercentEncoding() という静的関数が用意されています。
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: no scheme 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は絶対パスでありながら相対パスを含むことがあり、またその逆もあることに注意してください:
// Absolute URL, relative path QUrl url("file:file.txt"); qDebug() << url.isRelative(); // false: has "file" scheme qDebug() << QDir::isAbsolutePath(url.path()); // false: relative path // Relative URL, absolute path 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のほとんどの部分で許可されています。
次の例はこの問題を示しています:
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で使われた場合、ウェブサーバーによる解釈はおそらく異なるでしょう。最初のケースでは、"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 = {})
与えられたドメイン名domain の Unicode 形式を返します。これは ASCII 互換エンコード (ACE) でエンコードされています。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"
など)を非米国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がある場合にのみ意味を持ちます。例えば
QUrl url = QUrl::fromLocalFile("file.txt"); QUrl baseUrl = QUrl("file:/home/user/"); // wrong: prints QUrl("file:file.txt"), as url already has a scheme qDebug() << baseUrl.resolved(url);
このようなURLを解決するには、事前にスキームを削除する必要があります:
// correct: prints 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/"); // prints 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)
urls を表す文字列のリストを、QUrl(str,mode) を使って 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 になります。
- ホスト名は 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標準の標準エンコーディング規則に準拠し ていなければならない。
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
この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
を変換できないため、ある程度のデータ損失が発生します。
この例では、+
が変換できないため、ある程度のデータロスが発生します。また、パスにサブデリミタ( など)が含まれている場合にも、データロスが発生する可能性があります:
その他のデコード例:
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"
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のスキームと権限を持つが、マージされたパスを持つ:
QUrl baseUrl("http://qt.digia.com/Support/"); QUrl relativeUrl("../Product/Library/"); qDebug(baseUrl.resolved(relativeUrl).toString()); // prints "http://qt.digia.com/Product/Library/"
. "を指定してresolved()を呼び出すと、QUrl 。そのディレクトリは、元のディレクトリより 1 レベル高くなります。同様に、"../... "を指定してresolved()を呼び出すと、パスから2レベルが削除される。relative が "/" の場合、パスは "/" になる。
isRelative()も参照 。
QString QUrl::scheme() const
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()の引数(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 では、'%'文字の後には、16進数で正確に2文字続く必要があり、デコードされていない形では許可されない文字 (スペースを含む) もある。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 では、'%'文字の後に 16 進数で正確に 2 文字続く必要があり、一部の文字(スペースを含む)はデコードされていない形式では許可されません。TolerantMode (デフォルト) では、すべての文字がデコードされない形で受け入れられ、寛容なパーサーは、2つの16進数文字が続かない、迷子の'%'を修正します。DecodedMode では、'%'はそれ自身を表し、エンコードされた文字は使えない。
QUrl::DecodedMode は、ユーザに表示されるパスワード・ダイアログや、 フォーマット・オプションを指定して () を呼び出して取得したユーザ名など、URL ではないデータ・ソースからユーザ名を設定する場合に使用する必要があります。QUrl::FullyDecoded userName
userName() およびsetUserInfo()も参照の こと。
[noexcept]
void QUrl::swap(QUrl &other)
URLother をこの URL と交換する。この操作は非常に高速で、失敗することはない。
[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で更新されています。これは、アプリケーションにおけるドメイン名の国際化(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のpathコンポーネントに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 / "-" / "." / "_" / "~"
QByteArray ba = QUrl::toPercentEncoding("{a fishy string?}", "{}", "s"); qDebug(ba.constData()); // prints "{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も参照してください 。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。