1

您好我正在尝试将 QWebEngine URL 设置为放置在工作目录中的 index.html 文件。我正在尝试通过将 URL 设置为来使用该文件,./index.html但它似乎无法找到该文件。

这是我的文件放置的地方

  • 内容(工作目录)

    • 主文件
    • 内容.pro
    • 索引.html

如何在不使用完整系统路径的情况下通过 QWebEngine 打开 index.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();
}
4

3 回答 3

3

尝试将 html 文件移动到您的项目构建目录(您当前将其保存在源目录中)。然后您可以通过以下方式构建您的 URL:

QUrl url = QUrl::fromLocalFile(QDir::currentPath() + "/index.html");

并将其设置为视图:

QWebEngineView view;
view.setUrl(url);
view.resize(1024, 750);
view.show();
于 2018-03-12T13:31:39.703 回答
0

来自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

试试: view.setUrl(QUrl(QStringLiteral("index.html")));

于 2018-03-12T13:04:08.850 回答
0

正如保罗在他的回答中指出的那样,您很可能是在源代码之外构建的,因此您的index.html文件必须位于content.exe创建的文件夹中,而不是源文件夹中。

为了使这更简单,更安全,Qt 支持通过 Qt 资源文件 (.qrc) 在 .exe 中嵌入文件。这些可以很容易地在 Qt Creator 中创建,一旦添加到项目中,嵌入式文件就可以通过qrc:///前缀访问。

因此,在您的示例代码中,在将 .qrc 文件添加到您的项目并将 index.html 添加到其中之后,您可以像这样调整您的代码:

view.setUrl(QUrl(QStringLiteral("qrc:///index.html")));

这具有无论构建类型或位置如何都可以工作的优势,并且比尝试将文件复制步骤添加到项目文件(或每次手动复制文件)要简单得多

于 2018-03-13T04:06:16.840 回答