您好,我正在尝试将 QWebEngine URL 设置为放置在工作目录中的索引.html文件。我正在尝试通过将 URL 设置为 ./index.html
来使用该文件,但它似乎找不到该文件。
这是我的文件放置的地方
-
内容(工作目录(
- 主.cpp
- content.pro
- 索引.html
如何在不使用完整系统路径的情况下通过 QWebEngine 打开索引.html?
这是我的代码
#include <QApplication>
#include <QWebEngineView>
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication app(argc, argv);
QWebEngineView view;
view.setUrl(QUrl(QStringLiteral("file:///./index.html")));
view.resize(1024, 750);
view.show();
return app.exec();
}
尝试将 html 文件移动到项目构建目录(当前将其保存在源目录中(。然后,您可以通过以下方式构建URL:
QUrl url = QUrl::fromLocalFile(QDir::currentPath() + "/index.html");
并将其设置为视图:
QWebEngineView view;
view.setUrl(url);
view.resize(1024, 750);
view.show();
来自 http://doc.qt.io/qt-5/qurl.html
qDebug() << QUrl("main.qml").isRelative(); // true: no scheme
qDebug() << QUrl("qml/main.qml").isRelative(); // true: no scheme
qDebug() << QUrl("file:main.qml").isRelative(); // false: has "file" scheme
qDebug() << QUrl("file:qml/main.qml").isRelative(); // false: has "file" scheme
Try: view.setUrl(QUrl(QStringLiteral("index.html"(((;
正如 p-a-o-l-o 在他的回答中指出的那样,您可能是在源代码外构建,因此您的index.html
文件必须位于创建content.exe
的文件夹中,而不是在源文件夹中。
为了使这不那么复杂,更安全,Qt支持通过Qt资源文件(.qrc(在.exe中嵌入文件。这些可以在Qt Creator中轻松创建,一旦添加到项目中,嵌入的文件就可以通过qrc:///
前缀访问。
因此,在示例代码中,将 .qrc 文件添加到项目并向其添加 index.html 后,您将像这样调整代码:
view.setUrl(QUrl(QStringLiteral("qrc:///index.html")));
这具有无论构建类型或位置如何都可以工作的优点,并且比尝试将文件复制步骤添加到项目文件(或每次手动复制文件(要简单得多。