从工作目录QtWebEngine

时间:2018-03-12 12:59:47

标签: c++ qt path qtwebengine qwebengineview

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

这是放置文件的位置

  • 内容(工作目录)

    • 的main.cpp
    • content.pro
    • 的index.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();
}

3 个答案:

答案 0 :(得分:2)

尝试将html文件移动到项目构建目录(您当前将其保留在源目录中)。然后你可以这样建立你的网址:

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

并将其设置为视图:

QWebEngineView view;
view.setUrl(url);
view.resize(1024, 750);
view.show();

答案 1 :(得分:0)

来自Import .tar file using Azure Data Factory

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(&#34; index.html&#34;)));

答案 2 :(得分:0)

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

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

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

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

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