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的更多相关文章

  1. Qt:QUrl构造时的qrc前缀

    参考(按对我帮助从大到小排列): Qt内的各种路径(让人迷惑) - 鬼谷子com - 博客园 qt webengineview 加载本地资源方式 - beautifulday - 博客园 (17条消息 ...

  2. Qt:禁止qDebug的输出

    Qt:禁止qDebug的输出 在工程的.pro文件里加上以下编译批令即可: DEFINES += QT_NO_DEBUG_OUTPUT

  3. Qt:使用自定义的字体

    Qt:使用自定义的字体 1. 下载字体文件 2. 加载字体文件 3. 使用字体   QFontDatabase::addApplicationFont("XENOTRON.TTF" ...

  4. Qt:QJsonObject

    0.说明 QJsonObject在逻辑上就是一个Map或Dict!记住这一点对理解它的方法.说明很有帮助. QJsonObject类封装了JSON Object. JSON Object是一个Key- ...

  5. Qt:QJsonValue

    0.说明 QJsonValue类用于操作JSON中的各种数据. JSON是用于存储结构化数据的格式,JSON中的数据可以是六种类型: 基本类型 存储类型 bool QJsonValue::Bool d ...

  6. Qt:QJsonArray

    0.说明 QJsonArray中存储了一系列的QJsonValue.可以向其中插入.删除QJsonValue. 一个QJsonArray可以与QVariantList互相转换.可以通过size()访问 ...

  7. QT:多线程HTTP下载文件

    这里的线程是指下载的通道(和操作系统中的线程不一样),一个线程就是一个文件的下载通道,多线程也就是同时开起好几个下载通道.当服务器提供下载服务时,使用下载者是共享带宽的,在优先级相同的情况下,总服务器 ...

  8. QT:用QWebSocket实现webchannel,实现C++与HTML通信

    基本原理是通过channel将C++对象暴露给HTML,在HTML中调用qwebchannel.js.前提是建立transport,QT只提供了一个抽象基类QWebChannelAbstractTra ...

  9. Qt:QNetworkReply

    0.说明 QNetworkReply对象包含了Manager发送的请求头和返回的数据. 它继承自QIODevice,所以可以用各种read获取其中返回的数据: QByteArray data = re ...

随机推荐

  1. keepalived的抢占与非抢占模式

    目录 一:keepalived的抢占与非抢占模式 1.抢占模式 2.非抢占模式 二:接下来分4种情况说明 三:以上3种,只要级别高就会获取master,与state状态是无关的 一:keepalive ...

  2. Mongodb全备+增备+oplog恢复误删数据

    此时测试表中有7条数据,做个全备. 全备: mongodump --host=192.168.43.43 --port=37017 --oplog --out=/opt/mongo/fullbacku ...

  3. Springboot +redis+⾕歌开源Kaptcha实现图片验证码功能

    Springboot +redis+⾕歌开源Kaptcha实现图片验证码功能 背景 注册-登录-修改密码⼀般需要发送验证码,但是容易被 攻击恶意调⽤ 什么是短信-邮箱轰炸机 手机短信轰炸机是批.循环给 ...

  4. 计算机网络再次整理————tcp的关闭[七]

    前言 tcp的关闭不是简单粗暴的,相对而言是友好优雅的,好聚好散吧. 那么友好的关闭方式是这样的: 假设这里是客户端请求关闭的,服务端倒过来. 客户端:我要请求关闭 服务端:我接收到你的请求了,等我把 ...

  5. 微信小程序之video组件与cover-view组件和cover-image组件灵活应用

    前言:最近忙着赶项目,没时间更博:希望和大家一起学习一起进步. 本人遇到的坑,以及爬出坑的方法:在某个微信小程序项目中,有这样一个需求:在滑块swiper组件和swiper-item组件中嵌套vide ...

  6. 性能测试之监控--zabbix通过jmx监控tomcat

    前提: 已经安装好了zabbix server 实验环境 Centos 7 Zabbix 3.0 Tomcat 7.0 JDK 1.8 安装JDK tar -zxvf jdk-8u181-linux- ...

  7. JAVA! static的作用

    是静态修饰符,什么叫静态修饰符呢?大家都知道,在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只 ...

  8. 有手就行——Jenkins介绍 及 Gitlab代码托管服务器安装

    Jenkins 介绍 及 Gitlab代码托管服务器安装 Gitlab安装 源码上传到Gitlab仓库 Jenkins介绍 Jenkins 是一款流行的开源持续集成(Continuous Integr ...

  9. Nginx的优化与防盗链

    Nginx的优化与防盗链 1.隐藏版本号 2.修改用户与组 3.缓存时间 4.日志切割 5.连接超时 6.更改进程数 7.配置网页压缩 8.配置防盗链 9.fpm参数优化 1.隐藏版本号: 可以使用 ...

  10. go基础——变量与常量

    变量 package main import "fmt" /* 变量:variable 概念:一小块内存,用于存储数据,在程序运行过程中数值可以改变 特性:静态语言,强类型语言 * ...