Чтение файла из рабочего каталога QtWebEngine

Здравствуйте! Я пытаюсь установить URL-адрес QWebEngine для файла index.html, который находится в рабочем каталоге.
Я пытаюсь использовать файл, задав URL-адрес ./index.html но он не может найти файл.

Здесь находятся мои файлы

  • содержание (рабочий каталог)

    • main.cpp
    • content.pro
    • index.html

Как я могу открыть index.html через QWebEngine, не используя полный системный путь?

вот мой код

#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();
}

0

Решение

Попробуйте переместить HTML-файл в свой проект строить каталог (вы в настоящее время храните его внутри исходного каталога). Затем вы можете создать свой URL следующим образом:

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

и установите его на вид:

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

Другие решения

От 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»)));

0

Как указал в своем ответе п-о-о-л-о, вы, скорее всего, строите вне источника, поэтому ваш index.html файл должен находиться в папке где content.exe создан, а не в исходной папке.

Чтобы сделать это менее сложным и безопасным, Qt поддерживает встраивание файлов в .exe через файлы ресурсов Qt (.qrc). Их можно легко создать в Qt Creator, и после добавления в проект встроенные файлы доступны через qrc:/// префикс.

Таким образом, в вашем примере кода после добавления файла .qrc в ваш проект и добавления к нему index.html вы должны настроить свой код следующим образом:

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

Это дает преимущество работы независимо от типа сборки или местоположения, и это намного проще, чем пытаться добавить шаг копирования файла в файл проекта (или каждый раз вручную копировать файл)

0
По вопросам рекламы [email protected]