104 enum UrlFormattingOption :
unsigned int {
107 RemovePassword = 0x2,
108 RemoveUserInfo = RemovePassword | 0x4,
110 RemoveAuthority = RemoveUserInfo | RemovePort | 0x10,
113 RemoveFragment = 0x80,
115 PreferLocalFile = 0x200,
116 StripTrailingSlash = 0x400,
117 RemoveFilename = 0x800,
118 NormalizePathSegments = 0x1000
121 enum ComponentFormattingOption :
unsigned int {
122 PrettyDecoded = 0x000000,
123 EncodeSpaces = 0x100000,
124 EncodeUnicode = 0x200000,
125 EncodeDelimiters = 0x400000 | 0x800000,
126 EncodeReserved = 0x1000000,
127 DecodeReserved = 0x2000000,
130 FullyEncoded = EncodeSpaces | EncodeUnicode | EncodeDelimiters | EncodeReserved,
131 FullyDecoded = FullyEncoded | DecodeReserved | 0x4000000
133 Q_DECLARE_FLAGS(ComponentFormattingOptions, ComponentFormattingOption)
138 template<
typename T>
struct QFlags : QUrlTwoFlags<T, ComponentFormattingOption>
139 {
using QUrlTwoFlags<T, ComponentFormattingOption>::QUrlTwoFlags; };
141 Q_DECLARE_FLAGS(FormattingOptions, UrlFormattingOption)
143 typedef QUrlTwoFlags<UrlFormattingOption, ComponentFormattingOption> FormattingOptions;
147 QUrl(
const QUrl ©)
noexcept;
148 QUrl &operator =(
const QUrl ©)
noexcept;
149#ifdef QT_NO_URL_CAST_FROM_STRING
150 explicit QUrl(
const QString &url, ParsingMode mode = TolerantMode);
152 QUrl(
const QString &url, ParsingMode mode = TolerantMode);
153 QUrl &operator=(
const QString &url);
155 QUrl(QUrl &&other)
noexcept : d(other.d)
156 { other.d =
nullptr; }
157 QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QUrl)
160 void swap(QUrl &other)
noexcept { qt_ptr_swap(d, other.d); }
162 void setUrl(
const QString &url, ParsingMode mode = TolerantMode);
163 QString url(FormattingOptions options = FormattingOptions(PrettyDecoded))
const;
164 QString toString(FormattingOptions options = FormattingOptions(PrettyDecoded))
const;
165 QString toDisplayString(FormattingOptions options = FormattingOptions(PrettyDecoded))
const;
166 [[nodiscard]] QUrl adjusted(FormattingOptions options)
const;
168 QByteArray toEncoded(FormattingOptions options = FullyEncoded)
const;
169#if QT_CORE_REMOVED_SINCE(6
, 7
)
170 static QUrl fromEncoded(
const QByteArray &url, ParsingMode mode = TolerantMode);
172 static QUrl fromEncoded(QByteArrayView input, ParsingMode mode = TolerantMode);
174 enum UserInputResolutionOption {
178 Q_DECLARE_FLAGS(UserInputResolutionOptions, UserInputResolutionOption)
180 static QUrl fromUserInput(
const QString &userInput,
const QString &workingDirectory = QString(),
181 UserInputResolutionOptions options = DefaultResolution);
183 bool isValid()
const;
184 QString errorString()
const;
186 bool isEmpty()
const;
189 void setScheme(
const QString &scheme);
190 QString scheme()
const;
192 void setAuthority(
const QString &authority, ParsingMode mode = TolerantMode);
193 QString authority(ComponentFormattingOptions options = PrettyDecoded)
const;
195 void setUserInfo(
const QString &userInfo, ParsingMode mode = TolerantMode);
196 QString userInfo(ComponentFormattingOptions options = PrettyDecoded)
const;
198 void setUserName(
const QString &userName, ParsingMode mode = DecodedMode);
199 QString userName(ComponentFormattingOptions options = FullyDecoded)
const;
201 void setPassword(
const QString &password, ParsingMode mode = DecodedMode);
202 QString password(ComponentFormattingOptions = FullyDecoded)
const;
204 void setHost(
const QString &host, ParsingMode mode = DecodedMode);
205 QString host(ComponentFormattingOptions = FullyDecoded)
const;
207 void setPort(
int port);
208 int port(
int defaultPort = -1)
const;
210 void setPath(
const QString &path, ParsingMode mode = DecodedMode);
211 QString path(ComponentFormattingOptions options = FullyDecoded)
const;
212 QString fileName(ComponentFormattingOptions options = FullyDecoded)
const;
214 bool hasQuery()
const;
215 void setQuery(
const QString &query, ParsingMode mode = TolerantMode);
216 void setQuery(
const QUrlQuery &query);
217 QString query(ComponentFormattingOptions = PrettyDecoded)
const;
219 bool hasFragment()
const;
220 QString fragment(ComponentFormattingOptions options = PrettyDecoded)
const;
221 void setFragment(
const QString &fragment, ParsingMode mode = TolerantMode);
223 [[nodiscard]] QUrl resolved(
const QUrl &relative)
const;
225 bool isRelative()
const;
226 bool isParentOf(
const QUrl &url)
const;
228 bool isLocalFile()
const;
229 static QUrl fromLocalFile(
const QString &localfile);
230 QString toLocalFile()
const;
233 bool isDetached()
const;
235#if QT_CORE_REMOVED_SINCE(6
, 8
)
236 bool operator <(
const QUrl &url)
const;
237 bool operator ==(
const QUrl &url)
const;
238 bool operator !=(
const QUrl &url)
const;
241 bool matches(
const QUrl &url, FormattingOptions options)
const;
243 static QString fromPercentEncoding(
const QByteArray &);
244 static QByteArray toPercentEncoding(
const QString &,
245 const QByteArray &exclude = QByteArray(),
246 const QByteArray &include = QByteArray());
247#if defined(Q_OS_DARWIN) || defined(Q_QDOC)
248 static QUrl fromCFURL(CFURLRef url);
249 CFURLRef toCFURL()
const Q_DECL_CF_RETURNS_RETAINED;
250 static QUrl fromNSURL(
const NSURL *url);
251 NSURL *toNSURL()
const Q_DECL_NS_RETURNS_AUTORELEASED;
254 enum AceProcessingOption :
unsigned int {
255 IgnoreIDNWhitelist = 0x1,
256 AceTransitionalProcessing = 0x2,
258 Q_DECLARE_FLAGS(AceProcessingOptions, AceProcessingOption)
260#if QT_CORE_REMOVED_SINCE(6
, 3
)
261 static QString fromAce(
const QByteArray &);
262 static QByteArray toAce(
const QString &);
264 static QString fromAce(
const QByteArray &domain, AceProcessingOptions options = {});
265 static QByteArray toAce(
const QString &domain, AceProcessingOptions options = {});
267 static QStringList idnWhitelist();
268 static QStringList toStringList(
const QList<QUrl> &uris, FormattingOptions options = FormattingOptions(PrettyDecoded));
269 static QList<QUrl> fromStringList(
const QStringList &uris, ParsingMode mode = TolerantMode);
271 static void setIdnWhitelist(
const QStringList &);
272 friend Q_CORE_EXPORT size_t qHash(
const QUrl &url, size_t seed)
noexcept;
275 friend Q_CORE_EXPORT
bool comparesEqual(
const QUrl &lhs,
const QUrl &rhs);
276 friend Q_CORE_EXPORT Qt::weak_ordering
277 compareThreeWay(
const QUrl &lhs,
const QUrl &rhs);
278 Q_DECLARE_WEAKLY_ORDERED_NON_NOEXCEPT(QUrl)
280 void detachToClear();
283 friend class QUrlQuery;
286 typedef QUrlPrivate * DataPtr;
287 inline DataPtr &data_ptr() {
return d; }