Здравствуйте! Я пытаюсь установить URL-адрес QWebEngine для файла index.html, который находится в рабочем каталоге.
Я пытаюсь использовать файл, задав URL-адрес ./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();
}
Попробуйте переместить 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
Попробуйте: view.setUrl (QUrl (QStringLiteral («index.html»)));
Как указал в своем ответе п-о-о-л-о, вы, скорее всего, строите вне источника, поэтому ваш index.html
файл должен находиться в папке где content.exe
создан, а не в исходной папке.
Чтобы сделать это менее сложным и безопасным, Qt поддерживает встраивание файлов в .exe через файлы ресурсов Qt (.qrc). Их можно легко создать в Qt Creator, и после добавления в проект встроенные файлы доступны через qrc:///
префикс.
Таким образом, в вашем примере кода после добавления файла .qrc в ваш проект и добавления к нему index.html вы должны настроить свой код следующим образом:
view.setUrl(QUrl(QStringLiteral("qrc:///index.html")));
Это дает преимущество работы независимо от типа сборки или местоположения, и это намного проще, чем пытаться добавить шаг копирования файла в файл проекта (или каждый раз вручную копировать файл)