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,
131 FullyEncoded = EncodeSpaces | EncodeUnicode | EncodeDelimiters | EncodeReserved,
132 FullyDecoded = FullyEncoded | DecodeReserved | 0x4000000
134 Q_DECLARE_FLAGS(ComponentFormattingOptions, ComponentFormattingOption)
139 template<
typename T>
struct QFlags : QUrlTwoFlags<T, ComponentFormattingOption>
140 {
using QUrlTwoFlags<T, ComponentFormattingOption>::QUrlTwoFlags; };
142 Q_DECLARE_FLAGS(FormattingOptions, UrlFormattingOption)
144 typedef QUrlTwoFlags<UrlFormattingOption, ComponentFormattingOption> FormattingOptions;
148 QUrl(
const QUrl ©)
noexcept;
149 QUrl &operator =(
const QUrl ©)
noexcept;
150#ifdef QT_NO_URL_CAST_FROM_STRING
151 explicit QUrl(
const QString &url, ParsingMode mode = TolerantMode);
153 QUrl(
const QString &url, ParsingMode mode = TolerantMode);
154 QUrl &operator=(
const QString &url);
156 QUrl(QUrl &&other)
noexcept : d(other.d)
157 { other.d =
nullptr; }
158 QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QUrl)
161 void swap(QUrl &other)
noexcept { qt_ptr_swap(d, other.d); }
163 void setUrl(
const QString &url, ParsingMode mode = TolerantMode);
164 QString url(FormattingOptions options = FormattingOptions(PrettyDecoded))
const;
165 QString toString(FormattingOptions options = FormattingOptions(PrettyDecoded))
const;
166 QString toDisplayString(FormattingOptions options = FormattingOptions(PrettyDecoded))
const;
167 [[nodiscard]] QUrl adjusted(FormattingOptions options)
const;
169 QByteArray toEncoded(FormattingOptions options = FullyEncoded)
const;
170#if QT_CORE_REMOVED_SINCE(6
, 7
)
171 static QUrl fromEncoded(
const QByteArray &url, ParsingMode mode = TolerantMode);
173 static QUrl fromEncoded(QByteArrayView input, ParsingMode mode = TolerantMode);
175 enum UserInputResolutionOption {
179 Q_DECLARE_FLAGS(UserInputResolutionOptions, UserInputResolutionOption)
181 static QUrl fromUserInput(
const QString &userInput,
const QString &workingDirectory = QString(),
182 UserInputResolutionOptions options = DefaultResolution);
184 bool isValid()
const;
185 QString errorString()
const;
187 bool isEmpty()
const;
190 void setScheme(
const QString &scheme);
191 QString scheme()
const;
193 void setAuthority(
const QString &authority, ParsingMode mode = TolerantMode);
194 QString authority(ComponentFormattingOptions options = PrettyDecoded)
const;
196 void setUserInfo(
const QString &userInfo, ParsingMode mode = TolerantMode);
197 QString userInfo(ComponentFormattingOptions options = PrettyDecoded)
const;
199 void setUserName(
const QString &userName, ParsingMode mode = DecodedMode);
200 QString userName(ComponentFormattingOptions options = FullyDecoded)
const;
202 void setPassword(
const QString &password, ParsingMode mode = DecodedMode);
203 QString password(ComponentFormattingOptions = FullyDecoded)
const;
205 void setHost(
const QString &host, ParsingMode mode = DecodedMode);
206 QString host(ComponentFormattingOptions = FullyDecoded)
const;
208 void setPort(
int port);
209 int port(
int defaultPort = -1)
const;
211 void setPath(
const QString &path, ParsingMode mode = DecodedMode);
212 QString path(ComponentFormattingOptions options = FullyDecoded)
const;
213 QString fileName(ComponentFormattingOptions options = FullyDecoded)
const;
215 bool hasQuery()
const;
216 void setQuery(
const QString &query, ParsingMode mode = TolerantMode);
217 void setQuery(
const QUrlQuery &query);
218 QString query(ComponentFormattingOptions = PrettyDecoded)
const;
220 bool hasFragment()
const;
221 QString fragment(ComponentFormattingOptions options = PrettyDecoded)
const;
222 void setFragment(
const QString &fragment, ParsingMode mode = TolerantMode);
224 [[nodiscard]] QUrl resolved(
const QUrl &relative)
const;
226 bool isRelative()
const;
227 bool isParentOf(
const QUrl &url)
const;
229 bool isLocalFile()
const;
230 static QUrl fromLocalFile(
const QString &localfile);
231 QString toLocalFile()
const;
234 bool isDetached()
const;
236#if QT_CORE_REMOVED_SINCE(6
, 8
)
237 bool operator <(
const QUrl &url)
const;
238 bool operator ==(
const QUrl &url)
const;
239 bool operator !=(
const QUrl &url)
const;
242 bool matches(
const QUrl &url, FormattingOptions options)
const;
244 static QString fromPercentEncoding(
const QByteArray &);
245 static QByteArray toPercentEncoding(
const QString &,
246 const QByteArray &exclude = QByteArray(),
247 const QByteArray &include = QByteArray());
248#if defined(Q_OS_DARWIN) || defined(Q_QDOC)
249 static QUrl fromCFURL(CFURLRef url);
250 CFURLRef toCFURL()
const Q_DECL_CF_RETURNS_RETAINED;
251 static QUrl fromNSURL(
const NSURL *url);
252 NSURL *toNSURL()
const Q_DECL_NS_RETURNS_AUTORELEASED;
255 enum AceProcessingOption :
unsigned int {
256 IgnoreIDNWhitelist = 0x1,
257 AceTransitionalProcessing = 0x2,
259 Q_DECLARE_FLAGS(AceProcessingOptions, AceProcessingOption)
261#if QT_CORE_REMOVED_SINCE(6
, 3
)
262 static QString fromAce(
const QByteArray &);
263 static QByteArray toAce(
const QString &);
265 static QString fromAce(
const QByteArray &domain, AceProcessingOptions options = {});
266 static QByteArray toAce(
const QString &domain, AceProcessingOptions options = {});
268 static QStringList idnWhitelist();
269 static QStringList toStringList(
const QList<QUrl> &uris, FormattingOptions options = FormattingOptions(PrettyDecoded));
270 static QList<QUrl> fromStringList(
const QStringList &uris, ParsingMode mode = TolerantMode);
272 static void setIdnWhitelist(
const QStringList &);
273 friend Q_CORE_EXPORT size_t qHash(
const QUrl &url, size_t seed)
noexcept;
276 friend Q_CORE_EXPORT
bool comparesEqual(
const QUrl &lhs,
const QUrl &rhs);
277 friend Q_CORE_EXPORT Qt::weak_ordering
278 compareThreeWay(
const QUrl &lhs,
const QUrl &rhs);
279 Q_DECLARE_WEAKLY_ORDERED_NON_NOEXCEPT(QUrl)
281 void detachToClear();
284 friend class QUrlQuery;
287 typedef QUrlPrivate * DataPtr;
288 inline DataPtr &data_ptr() {
return d; }