Qt:QUrl
1、说明
概述
一个代表URL的类,此外还支持国际域名(IDNs)。
通常在初始化时传入QString构造QUrl,除此之外还能用setUrl()。
URL有两种表示格式:编码、未编码。未编码URL常用于显示,编码URL常用于发送给一个网络服务器进行处理,例如,未编码的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()分别构造一个URL每个分部。也可以使用一些综合的函数,比如setAuthority()可以同时设置Username、Password、Host、Port。setUserInfo()可以设置Username、Password。
如果要检查URL是否合法,可以调用isValid()方法。该方法可以用于构造一个URL的任何时期(这些时期就是上一段所说构造那些分块的时期)。如果isValid()返回false,那么在运行前就需要先调用clear()重置这个URL,之后通过setUrl()构造一个新的URL。
通过QUrlQuery类和它的相关方法可以构造一个Query。
调用static方法fromPercentEncoding()和toPercentEncoding()可以很方便的对URL和Query String进行编码和解码,返回值是QString类型。
fromLocalFile()方法通过解析一个本地文件构造一个QUrl,toLocalFile()则能将一个URL输出到一个本地文件中。
我们能够立刻辨识的URL可以通过toString()方法得到。这个方法可以很方便地用于展示一个非编码URL。如果想得到一个编码URL,可以用toEncoded(),编码URL常用于网络传输给Web服务器、邮箱客户端等等。URL不管编码与否都能无歧义且正确地代表同一个URL,也可以传入QUrl的构造方法或者setUrl()来产生一个相同的QUrl对象。
URL与Path
调用isRelative()可以判断URL是不是相对URL。相对URL没有scheme(暂时不知道咋翻译,就先用英文代替),一个scheme是指URL对应的Path中类似 xxx: 的前缀:
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的绝对/相对与Path的绝对/相对无关,Path的绝对相对是看Path是否从根目录开始;URL则是看是否有scheme:
// 相对URL, 绝对path
url = QUrl("/home/user/file.txt"); // 绝对URL, 相对path
QUrl url("file:file.txt");
一个相对URL可以通过resolved()转化为绝对URL。isParentOf()方法用于判断URL是否是另一个URL的Parent。
2、模块和加载项
| Header | #include<QUrl> |
| qmake | QT + = core |
3、构造
| QUrl( QUrl other ) |
| QUrl( QString url , QUrl::ParsingMode = TolerantMode ) |
| QUrl() |
4、静态方法
返回值类型 |
方法 |
说明 |
| QString | fromAce(QByteArray domain) | |
| QUrl | fromCFURL(CFURLRef url) | |
| QUrl | fromEncoded(QByteArray input, QUrl::ParsingMode parsingMode = TolerantMode) | |
| QUrl | fromLocalFile(QString localFile) | |
| QUrl | fromNSURL(NSURL *url) | |
| QString | fromPercentEncoding(QByteArray input) | |
| QList<QUrl> | fromStringList(QStringList urls, QUrl::ParsingMode mode = TolerantMode) | |
| QUrl |
fromUserInput(QString userInput) fromUserInput(QString userInput,QString workingDirectory, QUrl::UserInputResolutionOptions options = DefaultResolution) |
|
| QStringList | idnWhitelist() | |
| void | setIdnWhitelist(QStringList list) | |
| QByteArray | toAce(QString domain) | |
| QByteArray | toPercentEncoding(QString input,QByteArray exclude = QByteArray(),QByteArray include = QByteArray()) | |
| QStringList | toStringList(QList<QUrl> urls, QUrl::FormattingOptions options = FormattingOptions(PrettyDecoded)) |
5、实例方法
返回值类型 |
方法 |
说明 |
| QURL & |
operator=(QUrl other) operator=(QString & url) operator!=(QUrl url) operator==(QUrl url) |
|
| QUrl | adjusted(QUrl::FormattingOptions options) const | |
| QString | authority(QUrl::ComponentFormattingOptions options = PrettyDecoded) | |
| void | clear() | |
| QString | errorString() | |
| QString | fileName(QUrl::ComponentFormattingOptions options = FullyDecoded) | |
| QString | fragment(QUrl::ComponentFormattingOptions options = PrettyDecoded) | |
| bool | hasFragment() | |
| bool | hasQuery() | |
| QString | host(QUrl::ComponentFormattingOptions options = FullyDecoded) | |
| bool | isEmpty() | |
| bool | isLocalFile() | |
| bool | isParentOf(QUrl childUrl) | |
| bool | isRelative() | |
| bool | isValid() | |
| bool | matches(QUrl url, QUrl::FormattingOptions options) | |
| QString | password(QUrl::ComponentFormattingOptions options = FullyDecoded) | |
| QString | path(QUrl::ComponentFormattingOptions options = FullyDecoded) | |
| int | port(int defaultPort = -1) |
| QString | query(QUrl::ComponentFormattingOptions options = PrettyDecoded) | |
| QUrl | resolved(QUrl relative) | |
| QString | scheme() | |
| void |
setAuthority(QString authority, QUrl::ParsingMode mode = TolerantMode) setFragment(QString fragment, QUrl::ParsingMode mode = TolerantMode) setHost(QString host, QUrl::ParsingMode mode = DecodedMode) setPassword(QString password, QUrl::ParsingMode mode = DecodedMode) setPath(QString path, QUrl::ParsingMode mode = DecodedMode) setPort(int port) setQuery(QString query, QUrl::ParsingMode mode = TolerantMode) setQuery(QUrlQuery query) setScheme(QString scheme) setUrl(QString url, QUrl::ParsingMode parsingMode = TolerantMode) setUserInfo(QString userInfo, QUrl::ParsingMode mode = TolerantMode) setUserName(QString userName, QUrl::ParsingMode mode = DecodedMode) |
|
| void | swap(QUrl &other) | |
| CFURLRef | toCFURL() | |
| QString | toDisplayString(QUrl::FormattingOptions options = FormattingOptions(PrettyDecoded)) | |
| QByteArray | toEncoded(QUrl::FormattingOptions options = FullyEncoded) | |
| QString | toLocalFile() | |
| NSURL * | toNSURL() | |
| QString | toString(QUrl::FormattingOptions options = FormattingOptions(PrettyDecoded)) | |
| QString | url(QUrl::FormattingOptions options = FormattingOptions(PrettyDecoded)) const | |
| QString | userInfo(QUrl::ComponentFormattingOptions options = PrettyDecoded) | |
| QString | userName(QUrl::ComponentFormattingOptions options = FullyDecoded) |
Qt:QUrl的更多相关文章
- Qt:QUrl构造时的qrc前缀
参考(按对我帮助从大到小排列): Qt内的各种路径(让人迷惑) - 鬼谷子com - 博客园 qt webengineview 加载本地资源方式 - beautifulday - 博客园 (17条消息 ...
- Qt:禁止qDebug的输出
Qt:禁止qDebug的输出 在工程的.pro文件里加上以下编译批令即可: DEFINES += QT_NO_DEBUG_OUTPUT
- Qt:使用自定义的字体
Qt:使用自定义的字体 1. 下载字体文件 2. 加载字体文件 3. 使用字体 QFontDatabase::addApplicationFont("XENOTRON.TTF" ...
- Qt:QJsonObject
0.说明 QJsonObject在逻辑上就是一个Map或Dict!记住这一点对理解它的方法.说明很有帮助. QJsonObject类封装了JSON Object. JSON Object是一个Key- ...
- Qt:QJsonValue
0.说明 QJsonValue类用于操作JSON中的各种数据. JSON是用于存储结构化数据的格式,JSON中的数据可以是六种类型: 基本类型 存储类型 bool QJsonValue::Bool d ...
- Qt:QJsonArray
0.说明 QJsonArray中存储了一系列的QJsonValue.可以向其中插入.删除QJsonValue. 一个QJsonArray可以与QVariantList互相转换.可以通过size()访问 ...
- QT:多线程HTTP下载文件
这里的线程是指下载的通道(和操作系统中的线程不一样),一个线程就是一个文件的下载通道,多线程也就是同时开起好几个下载通道.当服务器提供下载服务时,使用下载者是共享带宽的,在优先级相同的情况下,总服务器 ...
- QT:用QWebSocket实现webchannel,实现C++与HTML通信
基本原理是通过channel将C++对象暴露给HTML,在HTML中调用qwebchannel.js.前提是建立transport,QT只提供了一个抽象基类QWebChannelAbstractTra ...
- Qt:QNetworkReply
0.说明 QNetworkReply对象包含了Manager发送的请求头和返回的数据. 它继承自QIODevice,所以可以用各种read获取其中返回的数据: QByteArray data = re ...
随机推荐
- 前端基础之SCC
目录 一:SCC 1.什么数SCC? 2.CSS3语法 3.语法结构 4.注释语法 5.css代码书写位置(引入方式) 二:scc代码书写位置(引入方式实战) 1.style内部直接编写css代码 2 ...
- linux正则表达式(全面解析)
目录 一:linux正则表达式介绍 二:普通正则表达式 三:扩展正则 一:linux正则表达式介绍 1.正则表达式的分类(grep) 1.普通正则表达式 2.扩展正则表达式 二:普通正则表达式 ^ : ...
- K8S SVC 转发原理
在前面的文章中,我们已经多次使用到了 Service 这个 Kubernetes 里重要的服务对象.而 Kubernetes 之所以需要 Service,一方面是因为 Pod 的 IP 不是固定的,另 ...
- plsql 数据库事件触发器
--4.数据库事件触发器 需要超管的权限 /* 数据库事件触发器有数据库级和模式级两种. 前者定义在整个数据库上,触发事件是数据库事件,如数据库的启动.关闭,对数据库的登录或退出. 后者定义在模式上, ...
- Luogu P1314 [NOIP2011 提高组] 聪明的质监员
P1314 [NOIP2011 提高组] 聪明的质监员 题意 题目描述 给定\(n\)个物品,给定每个物品的 重量 \(w_i\) 和 价值 \(v_i\) 给定一个标准值 \(s\) 以及一个参数 ...
- .NET6: 开发基于WPF的摩登三维工业软件
MS Office和VisualStudio一直引领着桌面应用的时尚潮流,大型的工业软件一般都会紧跟潮流,搭配着Ribbon和DockPanel风格的界面.本文将介绍WPF下两个轻量级的Ribbon和 ...
- 添加项目文件时候不要把引用文件直接放到bin-debug里
如果时anycpu没问题,但是新建其他平台时,会重新生成失败,原因时无法找到dll,现象为x64目录下的debug文件夹为空
- Spring与Struts2整合时action自动注入的问题
当Struts和Spring框架进行整合时,原本由action实例化对象的过程移交给spring来做(这个过程依赖一个叫struts2-spring-plugin的jar包,这个包主要的功能就是实现刚 ...
- 为什么后台给前台Date是时间戳,而前台给后台则直接是时间字符串?
一.因为时间的格式有很多种,不同的页面可能对不同的时间显示需求不同.比如: 05-8-8 上午9:17 2005-8-8 9:17:42 2005年8月8日 上午09时17分42秒 2005年8月8日 ...
- kubeadm部署安装+dashboard+harbor
kubeadm 部署安装+dashboard+harbor master(2C/4G,cpu核心数要求大于2) 192.168.80.10 docker.kubeadm.kubelet.kubectl ...