QWebengineView:用id打开本地文件

Posted

技术标签:

【中文标题】QWebengineView:用id打开本地文件【英文标题】:QWebengineView: open local file with id 【发布时间】:2020-02-15 03:14:23 【问题描述】:

我在 Manjaro Linux 上使用 Qt WebEngine 5.14。

我想用 id 打开本地 html 文件,但是下面的代码不起作用。它说找不到文件。

代码如下:

#include <QApplication>
#include <QWebEngineView>

int main(int argc, char *argv[])

    QApplication a(argc, argv);
    QWebEngineView view;

    //open remote html with id is working
    //view.load(QUrl("https://cges30901.github.io/test/hash/test#p3"));

    //open local file is working
    //view.load(QUrl::fromLocalFile(a.applicationDirPath()+"/test.html"));

    //open local file with id is not working
    view.load(QUrl::fromLocalFile(a.applicationDirPath()+"/test.html#p3"));

    view.show();
    return a.exec();

这是 test.html:

<!--?xml version='1.0' encoding='utf-8'?-->
<!DOCTYPE html>

<html lang="zh-hant" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8"/>
<title>test</title>
</head>
<body>
<p id="p1">This is paragraph 1</p>
<p id="p2">This is paragraph 2</p>
<p id="p3">This is paragraph 3</p>
<p id="p4">This is paragraph 4</p>
<p id="p5">This is paragraph 5</p>
<p id="p6">This is paragraph 6</p>
<p id="p7">This is paragraph 7</p>
<p id="p8">This is paragraph 8</p>
<p id="p9">This is paragraph 9</p>
<p id="p10">This is paragraph 10</p>
<p id="p11">This is paragraph 11</p>
<p id="p12">This is paragraph 12</p>
<p id="p13">This is paragraph 13</p>
<p id="p14">This is paragraph 14</p>
<p id="p15">This is paragraph 15</p>
<p id="p16">This is paragraph 16</p>
<p id="p17">This is paragraph 17</p>
<p id="p18">This is paragraph 18</p>
<p id="p19">This is paragraph 19</p>
</body>
</html>

有人可以教我如何用 id 打开本地 html 文件吗?

【问题讨论】:

【参考方案1】:

问题

您正在尝试从路径为.../test.html#p3 的本地文件创建一个url。调用QUrl::fromLocalFile 会导致无法加载类似file:///&lt;path&gt;/test.html%23p3 的url。

解决方案

首先将本地路径转换为 ​​URL。将片段添加到生成的 URL 并显示它:

QUrl url = QUrl::fromLocalFile(a.applicationDirPath() + "/test.html");
url.setFragment("p3");
view.load(url);

然后它按预期工作。

【讨论】:

谢谢!不知道有 setFragment()。

以上是关于QWebengineView:用id打开本地文件的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5:QWebEngineView 无法在 Windows 7 中呈现本地 html 文件

从 QWebEngineView 获取 PDF 文件的链接

QWebEngineView 在外部浏览器中打开

QWebEngineView - 如何在系统浏览器中打开链接

如何在 QWebEngineView 中禁用工具提示(标题)的自动换行

Qt编程使用QWebEngineView加载网页后,左键点击链接没反应,不能打开链接要怎么解决