【问题标题】:QWebEngineView - Load html from resourcesQWebEngineView - 从资源中加载 html
【发布时间】:2017-09-28 04:11:33
【问题描述】:

我目前正在使用 Qt 5.8 中的 QWebEngineView,我想从我的 .qrc 文件中加载一个 index.html 文件。

我的.pro 文件如下所示:

TEMPLATE = app
TARGET = Launcher
QT += webenginewidgets
CONFIG += c++14

SOURCES += main.cpp

RESOURCES += \
    launcher.qrc

我的main.cpp 文件如下所示:

#include <QApplication>
#include <QWebEngineView>

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

    QWebEngineView view;
    view.load(QUrl("qrc:/html/index.html"));
    view.resize(1024, 768);
    view.show();

    return a.exec();
}

在我的项目中有一个launcher.qrc 文件:

<RCC>
    <qresource prefix="/html">
        <file>index.html</file>
    </qresource>
</RCC>

index.html 里面我只是添加了文字Hello World 没有其他任何东西。

当我启动应用程序时,我只会看到“无法访问网站”错误屏幕。
然后我四处搜索并尝试了几种不同的尝试来将资源 url 指定到我的QWebEngineView:

view.setUrl(QUrl("qrc:/html/index.html")); // Same error page
view.page()->setUrl(QUrl("qrc:/html/index.html")); // Same error page
view.page()->load(QUrl("qrc:/html/index.html")); // Same error page

如果我将资源 url 从 qrc:/html/index.html 更改为 :/html/index.html,我将不再收到此错误页面,而是显示空白页面。如果我然后右键单击窗口并选择“查看页面源”,则页面源也是空的。

我最近使用相同的qrc:... url 使用 Qt Creator 4.2.2 创建的全新 Qt Quick Application 进行了这项工作。
现在我创建了一个 Qt Widgets 应用程序,但它不再工作了。
我在这里错过了什么?

【问题讨论】:

  • 对我来说很好。生成的任何编译/应用程序输出表明有什么异常?
  • 你能用你能想到的最简单的网站试试吗?

    标题

    某事

  • html 文件是否位于资源文件所在的文件夹中?也试试 qrc:///html/index.html 完整的 qt += 语句是什么样的?
  • 忘记我刚才说的话。我巧合地清理了项目并点击“运行 qmake”,然后再次运行项目。这次它适用于三个网址中的任何一个。这太令人沮丧了。感谢您的帮助@deW1
  • @TorbenJonas,请将其作为答案。尽管这看起来微不足道,但实际上可以为您节省大量时间来尝试使其正常工作。

标签: c++ qt qtwebengine qtwidgets


【解决方案1】:

按照建议,我会将上述 cmets 中的解决方案作为未来用户遇到相同问题的答案。

"[...] 我巧合地清理了项目并点击了“运行 qmake”,然后再次运行了项目。这次它可以使用三个 url 中的任何一个。这太令人沮丧了。 感谢您的帮助@deW1"

【讨论】:

  • 另外,view.load(QUrl(":/html/index.html")); 不起作用,它必须有 qrc:/ 协议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-21
相关资源
最近更新 更多