标签: qurl

QFile无法识别file:/// url路径格式

我从Qml获取文件路径,如下所示:

mainView.projectFilePath = Qt.resolvedUrl(newProjectFileDlg.fileUrl).toString();
Run Code Online (Sandbox Code Playgroud)

上面的文件路径如下所示:file:/// C:/uuuu.a3

但当这条路径传递给QFile时,它会抱怨

The filename, directory name, or volume label syntax is incorrect
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题呢?

c++ qt qml qurl qtcore

17
推荐指数
3
解决办法
2万
查看次数

你如何将QUrl addQueryItem移植到Qt5的QUrlQuery?

Qt4,使用下面的代码QUrl工作:

QUrl u;
foreach (const settings::PostItem & pi, settings.post)
    u.addQueryItem(pi.name, pi.value);
postData = u.encodedQuery();
Run Code Online (Sandbox Code Playgroud)

注意:此代码来自wkhtmltopdf并且postData是QByteArray.

但是,Qt5不再具有该addQueryItem()功能.你如何移植这段代码?

qt qurl qt5

12
推荐指数
1
解决办法
1万
查看次数

Qt5使用QUrl/QNetworkRequest将数据发布到服务器

我有一段代码在4.8中工作但现在我需要将它移植到Qt5(beta2)
这应该发生:
我想将一些数据发布到网络服务器,网址应该是这样的"http:// server/actions.php"然后我的字段("Action"-string和"data"字符串(json))应该使用post发送到服务器.未在网址中编码

QUrl params;
// The data to post
QVariantMap map;

map["Title"]="The title";
map["ProjectId"]="0";
map["Parent"]="0";
map["Location"]="North pole";
map["Creator"]="You";
map["Group"]="a group";
QByteArray data = Json::serialize(map); //the map is converted to json im a QByteArray

params.addEncodedQueryItem("Data",data);
params.addQueryItem("Action", "Update");

QNetworkRequest Request(QUrl("http://server.com/actions.php"));
Request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
NetManager->post(Request,params.encodedQuery());
Run Code Online (Sandbox Code Playgroud)

现在,我可能不会在第一时间做到这一点,(它工作在4.8)但真正的问题是addEncodedQueryItem和addQueryItem现在从Qt5开始消失了,我不知道应该用它替换它们.
我已经阅读了新文档并看到了新的QUrlQuery,但我无法弄清楚如何在我的情况下使用它.

qt qnetworkaccessmanager qurl qt5

8
推荐指数
1
解决办法
8512
查看次数

将带有百分比编码的QUrl转换为字符串

我使用用户输入的URL作为文本来初始化QUrl对象.后来我想将QUrl转换回字符串以显示它并使用正则表达式进行检查.只要用户没有输入任何百分比编码的URL,这就可以正常工作.

为什么以下示例代码不起作用?

qDebug() << QUrl("http://test.com/query?q=%2B%2Be%3Axyz%2Fen").toDisplayString(QUrl::FullyDecoded); 
Run Code Online (Sandbox Code Playgroud)

它根本不解码任何百分比编码的字符.它应该打印"http://test.com/query?q=++e:xyz/en"但实际打印"http://test.com/query?q=%2B%2Be%3Axyz%2Fen".

我还尝试了许多其他方法,如fromUserInput(),但我无法在Qt5.3中使代码正常工作.

有人可以解释我如何做到这一点,以及为什么上面的代码不起作用(即显示解码的URL),即使使用QUrl :: FullyDecoded?

UPDATE

获取fromPercentEncoding()提示后,我尝试了以下代码:

QUrl UrlFromUserInput(const QString& input)
{
   QByteArray latin = input.toLatin1();
   QByteArray utf8 = input.toUtf8();
   if (latin != utf8)
   {
      // URL string containing unicode characters (no percent encoding expected)
      return QUrl::fromUserInput(input);
   }
   else
   {
      // URL string containing ASCII characters only (assume possible %-encoding)
      return QUrl::fromUserInput(QUrl::fromPercentEncoding(input.toLatin1()));
   }
}
Run Code Online (Sandbox Code Playgroud)

这允许用户输入unicode URL和百分比编码的URL,并且可以解码这两种URL以进行显示/匹配.但是,百分比编码的URL在QWebView中不起作用... Web服务器响应不同(它返回了不同的页面).很明显,QUrl :: fromPercentEncoding()不是一个干净的解决方案,因为它有效地改变了URL.我可以在上面的函数中创建两个QUrl对象...一个直接构造,一个使用fromPercentEncoding()构建,第一个用于QWebView,后者仅用于显示/匹配......但这看起来很荒谬.

qstring qt urlencode qurl

7
推荐指数
1
解决办法
1万
查看次数

Qt如何在Qt 4.7中解码字符串(旧方法不见了)

我正在使用Qt 4.7.1和我试图找到解码网址的方法: https://xxx.com&since=2011-01-27T10%3A33%3A50%2B0000 到vaild日期,但我现在可以找到任何方法来做到这一点..它曾经是QUrl :: decode.

qt decode qurl

4
推荐指数
1
解决办法
2480
查看次数

如何在qt中解析网络主机名+端口?

我目前正在 Qt 中编写一个网络应用程序,需要以以下形式分隔网络地址:

example.org:1234
Run Code Online (Sandbox Code Playgroud)

到单独的主机名和端口 QStrings 中。

是否有 Qt 函数可以轻松解析它并检查给定的输入是否正确?

提前致谢!

c++ networking qt qurl qtcore

3
推荐指数
1
解决办法
3569
查看次数

如何从QUrl获取"查询字符串"?

我有一个QUrl,我需要提取路径+文件+参数.基本上除了主机名之外的所有内容 - 通过HTTP请求的内容.

我查看了Qt 4.6文档,但我找不到任何看起来会这样做的内容.

我会用什么方法打电话?

qt http qurl

2
推荐指数
1
解决办法
4094
查看次数

QT 5 中的 QUrl 解析

我有一个QUrl这样的:

https://www.example.com/index.html#token=SomeToken&user=guest

我想获取令牌的值 ie SomeToken。我知道方法QUrl::queryItemValue,所以这段代码必须有效:

void MainWindow::get_token(QUrl url)
{
    url = url.toString().replace("?","#");
    QString token = url.queryItemValue("token");
}
Run Code Online (Sandbox Code Playgroud)

但是Qt5我不能使用这个方法,我该如何解析url?

c++ qt parsing qurl

2
推荐指数
1
解决办法
5900
查看次数

如何将QDesktopServices :: openUrl与包含'#'的'file:'URL一起使用?

在我的应用程序中,我生成一个HTML文件,我想通过单击按钮打开它.所以我的文件被命名,例如:

QString file = "F:/the_path/to_the_/generated_html_file.html";
Run Code Online (Sandbox Code Playgroud)

在Windows上我将其更改为:

file = "file:///F:/the_path/to_the_/generated_html_file.html";
Run Code Online (Sandbox Code Playgroud)

所以我可以打开它:

QDesktopServices::openUrl(QUrl(file));
Run Code Online (Sandbox Code Playgroud)

它将在默认浏览器中打开.

但是当字符#存在于路径或文件名中时,它不再起作用,并且似乎URL在之后被截断#.

例如,如果我命名该文件generated#_html_file.html,我收到此错误消息:

ShellExecute 'F:/the_path/to_the_/generated' failed (error 2).
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况,我该如何避免呢?

qt qurl qdesktopservices

2
推荐指数
2
解决办法
5376
查看次数

在 Qt 中区分文件路径和 url

如果我有一个可以是文件URL的字符串,是否有任何现有的聪明方法可以用来区分它们?

例如:

这是加载设计器UI文件,所以我需要制作远程文件的本地临时副本。所以最重要的是知道我什么时候需要下载文件。

qt qurl

2
推荐指数
1
解决办法
1074
查看次数

QUrl解析失败

我有一个QUrl:https://www.example.com/success.html#token=XYZ&user=guest我想获得令牌的值,即XYZ

我目前的代码

QString token = url.queryItemValue(QString("token"));
cout << QString("access token is %1").arg(access_token);
Run Code Online (Sandbox Code Playgroud)

返回一个空字符串.

c++ qt qurl

0
推荐指数
1
解决办法
1035
查看次数

Qt - 从网址下载数据

我用PHP编写了一个Web服务.我需要通过Web服务URL下载内容.如何从URL下载数据?

需要哪些库?

qt qurl

0
推荐指数
1
解决办法
953
查看次数