Qt之QUrl和QUrlQuery

QUrl是Qt库中用于处理URL的类,支持通过构造函数或单独设置scheme、username、password等属性来构建URL。查询字符串用于向动态网页传递参数,QUrlQuery则方便管理查询中的key-value对。可以通过addQueryItem或setQueryItems添加参数,以及查询、修改或删除特定参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QUrl

QUrl 类提供了一个方便的接口使用 URLs。

最常见的使用QUrl 的方式是通过构造函数来初始化,传递一个 QString 参数。

QUrl url("https://github.com/");

也可以逐渐地构造 URL,通过调用 setScheme()、setUserName()、setPassword()、setHost()、setPort()、setPath()、setQuery() 和 setFragment()。一些方便的函数也可供使用:setAuthority() 设置用户名、密码、主机和端口。setUserInfo() 设置用户名和密码。

其中query

query 指查询字符串,可选,用于给动态网页(例如:使用 CGI、ISAPI、PHP/JSP/ASP/ASP、.NET 等技术制作的网页)传递参数,可有多个参数,用 & 隔开,每个参数的名和值用 = 隔开。

主要通过调用setQuery(QUrlQuery )来设置。

QUrlQuery

QUrlQuery 类提供了一种方法来操纵 URL 查询中的 key-value 对。

上述的查询字符串在 URL 中 被用来传输选项,通常解码为多个 key-value 对。其列表包含了的两个条目,键为“type”和 “color”。

添加组合成url

  1. addQueryItem

// 基本 URL
QString baseUrl = "http://www.zhihu.com/search";
QUrl url(baseUrl);
 
// key-value 对
QUrlQuery query;
query.addQueryItem("type", "content");
query.addQueryItem("q", "Qt");
 
url.setQuery(query);
 
qDebug() << url;
  1. 使用 setQueryItems:

// 基本 URL
QString baseUrl = "http://www.zhihu.com/search";
QUrl url(baseUrl);
 
QUrlQuery query;
 
// key-value 对
QPair<QString, QString> pair;
pair.first = "type";
pair.second = "content";
 
QPair<QString, QString> pair2;
pair2.first = "q";
pair2.second = "Qt";
 
QList<QPair<QString, QString> > items;
items << pair << pair2;
 
query.setQueryItems(items);
url.setQuery(query);
 
qDebug() << url;
  1. 使用 setQuery:

// 基本 URL
QString baseUrl = "http://www.zhihu.com/search";
QUrl url(baseUrl);
 
// 查询字符串
QUrlQuery query;
query.setQuery("type=content&q=Qt");
 
url.setQuery(query);
 
qDebug() << url;

常见操作

  1. 查询所有的 key-value 对:

QList<QPair<QString, QString> > list = query.queryItems();
  1. 查询指定 key 对应的 value:

QString value = query.queryItemValue("q");
  1. 查询指定 key 是否存在:

bool exist = query.hasQueryItem("q");
  1. 删除指定 key 对应的 key-value 对:

query.removeQueryItem("q");
QUrlQt中用于处理URL的类。它可以解析构建URL,支持各种协议(如http,ftp,file等),并提供了一些方便的方法来获取URL的各个部分。 下面是一些常见的QUrl使用方法: 1. 创建一个QUrl对象 ```cpp QUrl url("http://www.example.com/path/file.html"); ``` 2. 获取URL的各个部分 ```cpp QString scheme = url.scheme(); // 获取协议部分,如http QString host = url.host(); // 获取主机部分,如www.example.com int port = url.port(); // 获取端口号,如果没有指定则返回-1 QString path = url.path(); // 获取路径部分,如/path/file.html QString query = url.query(); // 获取查询字符串,如key=value&name=John QUrlFragment fragment = url.fragment(); // 获取片段标识符,如section1 ``` 3. 修改URL的各个部分 ```cpp url.setScheme("https"); // 修改协议部分为https url.setHost("example.com"); // 修改主机部分为example.com url.setPort(8080); // 修改端口号为8080 url.setPath("/newpath/file.html"); // 修改路径部分为/newpath/file.html url.setQuery("key=newvalue"); // 修改查询字符串为key=newvalue url.setFragment("section2"); // 修改片段标识符为section2 ``` 4. 判断URL是否合法 ```cpp bool isValid = url.isValid(); // 判断URL是否合法,如果合法则返回true ``` 5. 解析URL参数 ```cpp QUrlQuery query(url.query()); // 将查询字符串解析为QUrlQuery对象 QString value = query.queryItemValue("key"); // 获取查询参数key的值 ``` 6. 构建URL ```cpp QUrl url; url.setScheme("http"); url.setHost("www.example.com"); url.setPath("/path/file.html"); url.setQuery("key=value"); QString urlString = url.toString(); // 将QUrl对象转换为字符串,返回http://www.example.com/path/file.html?key=value ``` 以上是QUrl的一些常见用法,更多详细用法可以参考Qt官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值