自学内容网 自学内容网

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)!