qt QUrl详解
1、概述
QUrl是Qt框架中用于处理URL(统一资源定位符)的类,它提供了构建、解析、编码、解码和处理URL的功能。QUrl支持多种协议,如HTTP、HTTPS、FTP以及文件URL等,并能处理URL的各个组成部分,如协议、主机、路径、查询参数、端口、用户名和密码等。在QML中,QUrl常用于网络请求、文件访问等场景。
2、重要函数
- 构造函数和赋值运算符:用于创建和初始化
QUrl
对象,以及赋值。 adjusted()
:根据指定的格式化选项调整URL。authority()
、fragment()
、host()
、password()
、path()
、query()
、scheme()
、userInfo()
、userName()
等:用于获取URL的各个组成部分。hasFragment()
、hasQuery()
、isEmpty()
、isLocalFile()
、isParentOf()
、isRelative()
、isValid()
:用于检查URL的特定属性。setAuthority()
、setFragment()
、setHost()
、setPassword()
、setPath()
、setPort()
、setQuery()
、setScheme()
、setUserInfo()
、setUserName()
:用于设置URL的各个组成部分。resolved()
:解析相对URL。toCFURL()
、toNSURL()
:将QUrl
转换为平台特定的URL表示。toDisplayString()
、toEncoded()
、toLocalFile()
、toString()
:将QUrl
转换为不同格式的字符串表示。swap()
:与另一个QUrl
对象交换内容。
fromAce()
、toAce()
:用于ACE(ASCII Compatible Encoding)编码和解码域名。fromCFURL()
、fromNSURL()
:从平台特定的URL表示创建QUrl
对象。fromEncoded()
、fromLocalFile()
、fromUserInput()
:从编码的字符串、本地文件路径或用户输入创建QUrl
对象。fromPercentEncoding()
、toPercentEncoding()
:用于百分比编码和解码。fromStringList()
、toStringList()
:将URL字符串列表转换为QUrl
对象列表,或将QUrl
对象列表转换为字符串列表。idnWhitelist()
、setIdnWhitelist()
:获取或设置IDN(国际化域名)白名单。
3、常用枚举类型
-
ComponentFormattingOption 枚举
这个枚举定义了在格式化URL组件时的不同选项:
PrettyDecoded
:可能意味着以易于阅读的方式解码URL组件。EncodeSpaces
:对空格进行编码。EncodeUnicode
:对Unicode字符进行编码。EncodeDelimiters
:对分隔符进行编码。EncodeReserved
:对保留字符进行编码。FullyDecoded
:完全解码URL组件。
-
ParsingMode 枚举
这个枚举定义了URL解析的不同模式:
TolerantMode
:容错模式,可能允许一些不符合标准的URL格式。StrictMode
:严格模式,要求URL严格遵守标准。DecodedMode
:解码模式,可能在解析前对URL进行解码。
-
UrlFormattingOption 枚举
这个枚举定义了格式化URL时的不同选项:
None
:不进行任何格式化。RemoveScheme
:移除URL的方案部分(如http://
)。RemovePassword
:移除URL中的密码部分。RemoveUserInfo
:移除URL中的用户信息部分(用户名和密码)。RemovePort
:移除URL中的端口号。NormalizePathSegments
:规范化路径段,例如将//
替换为/
,移除.
和..
等。
-
UserInputResolutionOption 枚举
这个枚举定义了处理用户输入时的不同解析选项:
DefaultResolution
:使用默认解析方式。AssumeLocalFile
:假设输入为本地文件路径。
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
// 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
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
QUrl url("http://www.example.com/List of holidays.xml");
// url.toEncoded() == "http://www.example.com/List%20of%20holidays.xml"
QUrl url = QUrl::fromEncoded("http://qt-project.org/List%20of%20holidays.xml");
QUrl url("http://qt-project.org/support/file.html");
// url.adjusted(RemoveFilename) == "http://qt-project.org/support/"
// url.fileName() == "file.html"
觉得有帮助的话,打赏一下呗。。
需要商务合作(定制程序)的欢迎私信!!
原文地址:https://blog.csdn.net/ckg3824278/article/details/145294923
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!