> 文章列表 > Qt之QUrl和QUrlQuery

Qt之QUrl和QUrlQuery

Qt之QUrl和QUrlQuery

QUrl

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

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

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

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

Qt之QUrl和QUrlQuery

其中query

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

Qt之QUrl和QUrlQuery

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

QUrlQuery

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

Qt之QUrl和QUrlQuery

上述的查询字符串在 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");