如何在QUrl中设置主机路径?

Ole*_*kov 4 c++ url qt

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

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

QUrl url; 
url.setScheme("rtsp"); 
url.setHost("camera.lan"); 
auto url_str = url.toString().toStdString();  // "rtsp://camera.lan"
Run Code Online (Sandbox Code Playgroud)

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

url.setScheme("rtsp"); 
url.setPath("camera.lan"); 
auto url_str = url.toString().toStdString();  // "rtsp:camera.lan"
Run Code Online (Sandbox Code Playgroud)

但如果我设置主机路径,则它无效:

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

文档

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

但是如果我需要指定路径权限怎么办?

vah*_*cho 5

尝试通过调用QUrl::setPath()如下函数来设置路径:

url.setPath("/stream"); // Note the slash symbol.
Run Code Online (Sandbox Code Playgroud)

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