C++ QWebEngineView-从资源中加载html
我目前正在使用Qt5.8中的C++ QWebEngineView-从资源中加载html,c++,qt,qtwebengine,qtwidgets,C++,Qt,Qtwebengine,Qtwidgets,我目前正在使用Qt5.8中的QWebEngineView,我想从.qrc文件中加载index.html文件 我的.pro文件如下所示: TEMPLATE = app TARGET = Launcher QT += webenginewidgets CONFIG += c++14 SOURCES += main.cpp RESOURCES += \ launcher.qrc #include <QApplication> #include <QWebEngineVi
QWebEngineView
,我想从.qrc
文件中加载index.html
文件
我的.pro
文件如下所示:
TEMPLATE = app
TARGET = Launcher
QT += webenginewidgets
CONFIG += c++14
SOURCES += main.cpp
RESOURCES += \
launcher.qrc
#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();
}
我的main.cpp
文件如下所示:
TEMPLATE = app
TARGET = Launcher
QT += webenginewidgets
CONFIG += c++14
SOURCES += main.cpp
RESOURCES += \
launcher.qrc
#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();
}
在index.html
中,我只添加了文本helloworld
,没有其他内容
启动应用程序时,我只会看到一个“无法访问网站”错误屏幕。然后我在谷歌上搜索并尝试了几次不同的尝试来指定我的
QWebEngineView的资源url
:
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
,我将不再获得此错误页,而是获得一个空白页。如果我右键单击窗口并选择“查看页面源”,则页面源也是空的
最近,我使用QtCreator 4.2.2创建了一个新的QtQuick应用程序,使用相同的qrc:…
url,实现了这一点。现在我创建了一个Qt Widgets应用程序,它不再工作了。
我在这里遗漏了什么?正如我建议的那样,我将把上面评论中的解决方案作为未来有相同问题的用户的答案 “[…]我碰巧清理了这个项目,点击了“Run qmake”,然后再次运行了这个项目。这次它可以处理三个URL中的任何一个。这太令人沮丧了。
感谢您的帮助@deW1“对我来说效果很好。生成的任何编译/应用程序输出都表明有什么不寻常的地方吗?你能尝试一下你能想到的最简单的网站吗?HeadingSomethinghtml文件是否位于资源文件所在的文件夹中?也尝试qrc:///html/index.html 完整的qt+=语句是什么样子的?忘了我刚才说的吧。我碰巧清理了项目,点击“runqmake”,然后再次运行项目。这一次,它可以使用三个URL中的任意一个。这太令人沮丧了。谢谢你的帮助@deW1@TorbenJonas,请回答这个问题。虽然它看起来很琐碎,但实际上可以为您节省大量的工作时间代码>不起作用,它必须有
qrc://
协议。