【发布时间】:2017-04-25 18:42:36
【问题描述】:
我试着一块一块地构造QUrl:
QUrl url{"https://host.org/path"};
url.setScheme("http");
url.setPort(81);
url.setUserName("user");
url.setPassword("password");
url.setHost("server.com");
QUrlQuery urlQuery;
urlQuery.setQueryItems({{"key1", "value1"}, {"key2", "value2"}, {"key3", "value3"}});
url.setQuery(urlQuery);
url.setFragment("fragment");
//url.setPath("dir/file.htm");
qDebug() << url;
输出(中途不小心遗漏了密码):
QUrl("http://user@server.com:81/path?key1=value1&key2=value2&key3=value3#fragment")
首先,如果QUrl 是默认构造的,那么使用setter 我根本无法向其中添加任何内容。
在上面的代码中,如果我取消注释最后一行,则输出变为QUrl("")。即QUrl::setPath 清理QUrl 实例的整个内部表示。
这两种行为都正常吗?还是他们是虫子?
我使用 Qt 5.7.1。
看来,简单的字符串连接不太容易出错。
【问题讨论】:
-
如果我写
QUrl url("server.com"); url.setScheme("http");那么url包含http:server.com和QNetworkAccessManager告诉我Host not found。这正常吗?