【Qt Libraries】QUrl 的基本使用方法
参考博客:
简述: QUrl类提供了一个方便的接口使用Urls,它可以构造解析编码和未编码形式的URls。QUrl也支持国际化域名(IDNs)。
1、Create Object
QUrl url("https://www.baidu.com/");
// 或
QUrl url;
url.setUrl("https://www.baidu.com/");
URls形式有两种:编码或未编码。未编码形式适用于显示给用户,编码形式通常会发送到一个web服务器。
2、Base Usage
void setScheme(const QString &scheme);
QString scheme() const;
void setAuthority(const QString &authority, ParsingMode mode = TolerantMode);
QString authority(ComponentFormattingOptions options = PrettyDecoded) const;
void setUserInfo(const QString &userInfo, ParsingMode mode = TolerantMode);
QString userInfo(ComponentFormattingOptions options = PrettyDecoded) const;
void setUserName(const QString &userName, ParsingMode mode = DecodedMode);
QString userName(ComponentFormattingOptions options = FullyDecoded) const;
void setPassword(const QString &password, ParsingMode mode = DecodedMode);
QString password(ComponentFormattingOptions = FullyDecoded) const;
void setHost(const QString &host, ParsingMode mode = DecodedMode);
QString host(ComponentFormattingOptions = FullyDecoded) const;
QString topLevelDomain(ComponentFormattingOptions options = FullyDecoded) const;
void setPort(int port);
int port(int defaultPort = -1) const;
void setPath(const QString &path, ParsingMode mode = DecodedMode);
QString path(ComponentFormattingOptions options = FullyDecoded) const;
QString fileName(ComponentFormattingOptions options = FullyDecoded) const;
bool hasQuery() const;
void setQuery(const QString &query, ParsingMode mode = TolerantMode);
void setQuery(const QUrlQuery &query);
QString query(ComponentFormattingOptions = PrettyDecoded) const;
bool hasFragment() const;
QString fragment(ComponentFormattingOptions options = PrettyDecoded) const;
void setFragment(const QString &fragment, ParsingMode mode = TolerantMode);
3、URL Format
3.1、Scheme
scheme指定使用的传输协议,它由 URL 起始部分的一个或多个 ASCII 字符表示。scheme 只能包含 ASCII 字符,对输入不做转换或解码,必须以 ASCII 字母开始。
// scheme 严格兼容 RFC 3986:
scheme = ALPHA *( ALPHA / DIGIT / “+” / “-” / “.”)
QUrl url;
url.setScheme("ftp");
传输协议类型如下表:
| 协议 | 描述 |
|---|---|
| file | 资源是本地计算机上的文件。格式:file:///,注意后边应是三个斜杠 |
| ftp | 通过 FTP 访问资源。格式:FTP:// |
| gopher | 通过 Gopher 协议访问该资源 |
| http | 通过 HTTP 访问该资源。格式:HTTP:// |
| https | 通过安全的 HTTPS 访问该资源。格式:HTTPS:// |
| mailto | 资源为电子邮件地址,通过 SMTP 访问。格式:mailto: |
| MMS | 通过支持MMS(流媒体)协议的播放该资源(代表软件:Windows Media Player)。格式:MMS:// |
| ed2k | 通过支持ed2k(专用下载链接)协议的P2P软件访问该资源(代表软件:电驴)。格式:ed2k:// |
| Flashget | 通过支持Flashget:(专用下载链接)协议的P2P软件访问该资源(代表软件:快车)。格式: Flashget:// |
| thunder | 通过支持thunder(专用下载链接)协议的 P2P 软件访问该资源(代表软件:迅雷)。格式: thunder:// |
| news | 通过 NNTP 访问该资源 |
3.2、Authority
URL 的 authority 由用户信息,主机名和端口组成。所有这些元素都是可选的,即使 authority 为空,也是有效的。
格式:username:password@hostname:port
用户信息和主机名由 " @ " 分割,主机和端口由 ":" 分割。如果用户信息为空,则 " @ " 必须被省略。如果端口为空,允许使用 " :"
host:指存放资源的服务器的域名系统(DNS)主机名或 IP地址。port:整数,可选,省略时使用方案的默认端口,各种传输协议都有默认的端口号,如HTTP的默认端口80。如果输入时省略,则使用默认端口号。
3.3、user info
user info 指用户信息,是URL中 authority 可选的一部分。用户信息包括用户名和一个可选密码,由 " : " 分割 。如果密码为空, ": " 须被省略。
3.4、path
由零个或多个 / 隔开的字符串,一般用来表示主机上的一个目录或文件地址。 在 authority 之后,query之前。
对于没有层级的 schemes , 路径将是 scheme 后的所有部分,如下:
3.5、query
query 指查询字符串,可选,用于给动态网页(例如:使用 CGI、ISAPI、PHP/JSP/ASP/ASP、.NET 等技术制作的网页)传递参数,可有数个参数,用 & 隔开,每个参数的名和值用 =隔开。
3.6、fragment
fragment 指定网络资源中的片段。是URL的最后一部分,由 *#*后面的跟的字符串表示。通常指的是用于HTTp页面上的某个链接或点
4、Other Application
bool isValid()const;//如果返回false,应该在继续之前clear()URL,或通过setUrl()传递一个新的URL
QTcpSocket sock;
sock.connectToHost(url.host(),url.port(80));//通过socket连接到一个指定QUrl包含的主机、端口
QUrl url1=QUrl::fromLocalFile("E:\\Qt.txt");//使用fromLocalFile()构造一个QUrl,通过传递一个本地文件路径
//toLocalFile()将一个URL转换为本地文件路径。
QUrl url2("http://qt-project.org/support/file.html");
url2.fileName();//返回文件的名称。若url以斜杠结束,文件的名称是空的。若路径不包含任何斜线,完全返回作为文件名
[static] QUrl fromUserInput(const QString &userInput);//返回从一个用户提供的用户输入的字符串的一个有效的URL
QUrl resolved(const QUrl &relative)const Q_REQUIRED_RESULT;//相对的URL可被转变通过将它作为参数传递给resolved(),会返回一个绝对URL
//如果relative不是一个相对URL,该函数会直接返回relative。
bool isRelative()const;//判断url是否相对
bool isParentOf(const QUrl &url)const;//判断一个URL是否是另一个的parent
//处理编码和解码的百分比
static QString fromPercentEncoding(const QByteArray&);
static QByteArray toPercentEncoding(const QString&,
const QByteArray &exclude=QByteArray(),
const QByteArray &include=QByteArray());
【Qt Libraries】QUrl 的基本使用方法的更多相关文章
- ubuntu QT开发环境(三种方法安装Qt4.8,其中apt-get方法安装QT库最简单)good
方法一 QT4.8.0库+QT Creator 2.4.1 特别声明:此方法极其耗时间,看电脑性能了.配置configure可减少编译时间 1.下载Qt .进入网址http://qt.nokia.co ...
- paip.c++ qt 项目工程互相引用的方法
paip.c++ qt 项目工程互相引用的方法 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/ ...
- 官网下载qt-opensource-windows-x86-mingw482_opengl-5.3.1.exe。封装好了Qt libraries、Qt Creator。只需要这一个可执行程序就好了。
官网下载qt-opensource-windows-x86-mingw482_opengl-5.3.1.exe( http://qt-project.org/downloads).这个可执行程序已经为 ...
- QT学习之QString的arg方法
在QT的QString中,arg方法类似于C中的printf中使用的格式输出符(只是有点类似). 在QT5的帮助文档中,可以看出以下几点: 使用arg(str1, str2, str3)这种方法进行替 ...
- 公布Qt Widgets桌面应用程序的方法
公布Qt Widgets桌面应用程序的方法 Qt是一款优秀的跨平台开发框架,它能够在桌面.移动平台以及嵌入式平台上执行.眼下Qt 5介绍程序公布的文章帖子比較少.大家又很想要知道怎样公布Qt应用程序, ...
- 发布Qt Widgets桌面应用程序的方法(自定义进程步骤,用QT Creator直接生成)
发布Qt Widgets桌面应用程序的方法 Qt是一款优秀的跨平台开发框架,它可以在桌面.移动平台以及嵌入式平台上运行.目前Qt 5介绍程序发布的文章帖子比较少.大家又非常想要知道如何发布Qt应用程序 ...
- 发布Qt Quick桌面应用程序的方法(使得planets在XP上运行)
发布Qt Quick桌面应用程序的方法 Qt是一款优秀的跨平台开发框架,它可以在桌面.移动平台以及嵌入式平台上运行.目前Qt 5介绍程序发布的文章帖子比较少.大家又非常想要知道如何发布Qt应用程序,于 ...
- Qt:QUrl
1.说明 概述 一个代表URL的类,此外还支持国际域名(IDNs). 通常在初始化时传入QString构造QUrl,除此之外还能用setUrl(). URL有两种表示格式:编码.未编码.未编码URL常 ...
- 保持Qt GUI响应的几种方法
最开始使用Qt时就遇到过QT Gui失去响应的问题,我是用多线程的方式解决的,然而通常来说,多线程是会降低程序的运行速度. 之后,在使用QSqlQuery::execBatch()函数时,Qt Gui ...
- This application failed to start because it could not find or load the Qt platform plugin “windows”错误解决方法
这是一个困扰我很久的问题,关于Qt下生成的exe文件在没有安装Qt的机器上无法运行的问题.Qt是编写C++图形界面的一个很好工具,比MFC来的直观.可是,Qt的安装却是一个让人头疼的事情.早在上个学期 ...
随机推荐
- 七天.NET 8操作SQLite入门到实战 - 第二天 在 Windows 上配置 SQLite环境
前言 SQLite的一个重要的特性是零配置的.无需服务器,这意味着不需要复杂的安装或管理.它跟微软的Access差不多,只是一个.db格式的文件.但是与Access不同的是,它不需要安装任何软件,非常 ...
- C++ 邮件槽ShellCode跨进程传输
在计算机安全领域,进程间通信(IPC)一直是一个备受关注的话题.在本文中,我们将探讨如何使用Windows邮件槽(Mailslot)实现ShellCode的跨进程传输.邮件槽提供了一种简单而有效的单向 ...
- VScode怎么实现c的运行,这里只讲述一些细节
第一下载的Vscode要设置信任模式,否则你后面搞什么都没有用 第二下载minGw还是gcc 都行 第三安装插件,c,c++. 然后编译就行了,我搞了一天,主要弹出的是未找到exe文件,但是我告诉大家 ...
- 12 HTTP的实体数据
目录 数据类型和编码 HTTP协议为什么要关心 body MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型 HTTP 常用数据类型 MIM ...
- Redis工具类及Redis序列化
导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp ...
- 神奇的 SQL ,高级处理之 Window Functions → 打破我们的局限!
开心一刻 今天儿子跟老婆聊天 儿子:妈妈,我为什么没有两个爸爸呀 老婆:每个人都只有一个爸爸呀,你看谁有两个爸爸了 儿子一脸真诚的看着老婆:那你为什么就有两个爸爸呢 老婆一脸疑惑的望向儿子:我哪有两个 ...
- leetcode:354 俄罗斯套娃信封问题(LIS)
解题思路: 根据题意,不难发现组合的元素,他们的长宽都是单调递增的,因此可以转化为最长上升子序列问题. 首先按照长度从小到大对信封进行排序,长度相同,按照宽度从大到小进行排序.因为当长度相同,因为可能 ...
- 【笔记】01 -- Spring-Cloud介绍
第一章节我们主要是介绍微服务 springCloud的架构和分布式的区别 但是后面会主要介绍netflix公司与Alibaba公司的两套架构 系统架构 **概述** 随着互联网的发展,网站应用的规模不 ...
- uniapp的app苹果应用商店上架最简教程
除了测试版本之外,uniapp打包好的ipa文件是无法直接安装在普通用户的手机上面,这是苹果的证书和描述文件的机制的原因. 因此我们需要将打包好的ipa文件上架到苹果应用商店,也就是app store ...
- Python——Html(内联框架<iframe>)
<iframe>(内联框架)是 HTML 中的一个标签,用于在当前文档中嵌入另一个文档.它提供了一种将一个 HTML 文档嵌套到另一个文档的方式,允许在一个页面中显示另一个页面的内容.以下 ...