QWebEngineView不会加载本地文件,但会完美加载远程网页

问题描述 投票:0回答:3

MWE 演示该问题是这样的:

#include <QMainWindow>
#include <QApplication>
#include <QWidget>
#include <QWebEngineView>
#include <QGridLayout>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QMainWindow w;

    auto w1 = new QWidget();
    w1->setLayout(new GridLayout());

    auto view = new QWebEngineView();
    view->load(QUrl("file://C:\\Users\\FruitfulApproach\\Desktop\\AbstractSpacecraft\\MathEnglishApp\\KaTeX_template.html"));
    view->show();
    w1->layout()->addWidget(view);
    w.setCentralWidget(w1);
    w.show();
    return a.exec();
}

KaTeX_template.html:

<!DOCTYPE html>
<html>
<head>
<title>MathJax TeX Test Page</title>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}});
</script>
<script type="text/javascript" async
  src="https://example.com/mathjax/MathJax.js?config=TeX-AMS_CHTML">
</script>
</head>
<body>
When $a \ne 0$, there are two solutions to \(ax^2 + bx + c = 0\) and they are
$$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$
</body>
</html>

您必须在第一个代码清单中输入正确的文件路径。

无论如何,这不是模板,因为我在模板中放入了一些纯文本,并且发生了同样的事情。

我期望 QWebEngineView 能够加载本地文件。 我尝试使用前斜杠而不是反斜杠来处理文件路径字符串,每次更改都会在 Web 视图显示中生成“找不到文件”。

当前发生的情况是 QWebEngineView 仅显示空白白色。 当您右键单击视图时,您可以尝试重新加载或查看源代码,但没有任何反应。

我尝试加载在线网页并且有效。

c++ qt qwebengineview
3个回答
6
投票

如果您想使用文件路径创建 QUrl,请使用 QUrl::fromLocalFile():

view->load(QUrl::fromLocalFile("C:\\Users\\FruitfulApproach\\Desktop\\AbstractSpacecraft\\MathEnglishApp\\KaTeX_template.html"));

0
投票

QURL::fromLocalFile 在 Windows 下可以工作,但在 Linux 上不行!通过将 Google 地图的链接替换为 html 文件(例如 Apache2 文件 /var/www/html/index.html)的路径,可以在 Map 示例程序中轻松重现这一点。


0
投票

接受答案的一个很好的替代方法是使用

QUrl::fromUserInput

更加灵活并且还涵盖网络路径。

© www.soinside.com 2019 - 2024. All rights reserved.