首页 > 解决方案 > 如何在 QUrl 中设置与主机的路径?

问题描述

我正在使用 QUrl 构造一个字符串 url。假设我需要一个“rtsp://camera.lan/stream”网址。

下面的代码给出了“rtsp://camera.lan”网址:

QUrl url; 
url.setScheme("rtsp"); 
url.setHost("camera.lan"); 
auto url_str = url.toString().toStdString();  // "rtsp://camera.lan"

这给出了“rtsp:camera.lan”网址:

url.setScheme("rtsp"); 
url.setPath("camera.lan"); 
auto url_str = url.toString().toStdString();  // "rtsp:camera.lan"

但是,如果我使用主机设置路径,则无效:

url.setScheme("rtsp"); 
url.setHost("camera.lan"); 
url.setPath("stream"); 
auto url_str = url.toString().toStdString();  // gives ""
bool url_is_valid = url.isValid();  // false

文档说,

对于非分层方案,路径将是方案声明之后的所有内容

但是如果我需要指定路径权限呢?

标签: c++qturl

解决方案


尝试通过调用QUrl::setPath()这样的函数来设置路径:

url.setPath("/stream"); // Note the slash symbol.

反而。它会给你预期的结果,即rtsp://camera.lan/stream.


推荐阅读