从工作目录 QtWebEngine 读取文件



您好,我正在尝试将 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")));

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

相关内容

  • 没有找到相关文章

最新更新