QWebEngineView - загружать html из ресурсов

В настоящее время я играю с QWebEngineView в Qt 5.8, и я хотел бы загрузить файл index.html из моего файла .qrc.

Мой файл .pro выглядит так:

TEMPLATE = app
TARGET = Launcher
QT += webenginewidgets
CONFIG += c++14

SOURCES += main.cpp

RESOURCES += \
    launcher.qrc

Мой файл main.cpp выглядит так:

#include <QApplication>
#include <QWebEngineView>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QWebEngineView view;
    view.load(QUrl("qrc:/html/index.html"));
    view.resize(1024, 768);
    view.show();

    return a.exec();
}

В моем проекте есть файл launcher.qrc:

<RCC>
    <qresource prefix="/html">
        <file>index.html</file>
    </qresource>
</RCC>

Внутри index.html я просто добавил текст Hello World без всего остального.

Когда я запускаю приложение, я просто получаю экран с ошибкой "Веб-сайт недоступен".
Затем я погуглил и попробовал несколько разных попыток указать URL-адрес ресурса для моего QWebEngineView:

view.setUrl(QUrl("qrc:/html/index.html")); // Same error page
view.page()->setUrl(QUrl("qrc:/html/index.html")); // Same error page
view.page()->load(QUrl("qrc:/html/index.html")); // Same error page

Если я изменю URL-адрес ресурса с qrc:/html/index.html на :/html/index.html, я больше не получу эту страницу с ошибкой, а вместо этого получу пустую страницу. Если я затем щелкну окно правой кнопкой мыши и выберу «Просмотреть источник страницы», источник страницы тоже будет пустым.

Недавно я получил это, работая со свежим приложением Qt Quick, созданным с помощью Qt Creator 4.2.2 с использованием того же URL-адреса qrc:....
Теперь я создал приложение Qt Widgets, и оно больше не работает.
Что мне здесь не хватает? ?


person TorbenJ    schedule 30.04.2017    source источник
comment
У меня работает нормально. Любой вывод компиляции/приложения, указывающий на что-то необычное?   -  person deW1    schedule 30.04.2017
comment
Можете ли вы попробовать самый простой веб-сайт, который вы только можете себе представить? ‹!DOCTYPE html› ‹html› ‹body› ‹h1›Заголовок‹/h1› ‹p›Что-то‹/p› ‹/body› ‹/html›   -  person deW1    schedule 30.04.2017
comment
Это не работает независимо от того, что я помещаю в этот файл. Кажется, что файл не может быть найден. Если я попытаюсь открыть и прочитать файл с помощью QFile и QTextStream, в выводе приложения будет указано QIODevice::read (QFile, qrc:\html\index.html): устройство не открыто. Если я создаю новый проект Qt Quick и использую созданный файл .qrc, все работает нормально. Я не знаю, почему это работает, а мое оригинальное приложение Qt Widgets не работает.   -  person TorbenJ    schedule 30.04.2017
comment
HTML-файл находится в вашей папке, где находится файл ресурсов? также попробуйте qrc:///html/index.html, как выглядит полный оператор qt +=?   -  person deW1    schedule 30.04.2017
comment
Да, это. У меня в исходном каталоге всего пять файлов: index.html, Launcher.pro, Launcher.pro.user, launcher.qrc и main.cpp. Ваш предложенный URL тоже не работает :(   -  person TorbenJ    schedule 30.04.2017
comment
Забудь, что я только что сказал. Я случайно очистил проект и нажал «Выполнить qmake», а затем снова запустил проект. На этот раз он работал с любым из трех URL-адресов. Это так расстраивает. Спасибо за вашу помощь @deW1   -  person TorbenJ    schedule 30.04.2017
comment
@TorbenJonas, пожалуйста, сформулируйте это как ответ. Хотя это может показаться тривиальным, на самом деле это может сэкономить вам много времени, пытаясь заставить его работать.   -  person scopchanov    schedule 15.06.2017


Ответы (1)


Как было предложено, я поставлю решение из комментариев выше в качестве ответа для будущих пользователей, имеющих ту же проблему.

«[...] Я случайно очистил проект и нажал «Запустить qmake», а затем снова запустил проект. На этот раз он работал с любым из трех URL-адресов. Это так расстраивает. Спасибо за вашу помощь, @deW1"

person TorbenJ    schedule 15.06.2017
comment
Кроме того, view.load(QUrl(":/html/index.html")); не будет работать, он должен иметь протокол qrc:/. - person Donald Duck; 17.07.2017