2017-04-30 4 views
3

Ich spiele gerade mit QWebEngineView in Qt 5.8 und ich würde gerne eine index.html Datei von meiner .qrc Datei laden.QWebEngineView - Lade HTML von Ressourcen

Meine .pro Datei sieht wie folgt aus:

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

SOURCES += main.cpp 

RESOURCES += \ 
    launcher.qrc 

Meine main.cpp Datei sieht wie folgt aus:

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

In meinem Projekt gibt es eine launcher.qrc Datei:

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

Innen index.html Ich habe gerade den Text 01 hinzugefügtohne etwas anderes.

Wenn ich die Anwendung starte, bekomme ich nur eine Fehlermeldung "Website nicht erreichbar".
ich dann um gegoogelt und versucht, mehrere verschiedene Versuche, die Ressourcen-URL zu meinem QWebEngineView angeben:

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 

Wenn ich die Ressourcen-URL von qrc:/html/index.html zu :/html/index.html ich diese Fehlerseite nicht mehr erhalten ändern, aber eine leere Seite stattdessen. Wenn ich dann mit der rechten Maustaste auf das Fenster klicke und "Seitenquelle anzeigen" wähle, ist auch die Seitenquelle leer.

Ich habe vor kurzem diese Arbeit mit einem frischen Qt Quick-Anwendung mit Qt Creator 4.2.2 mit der gleichen qrc:... URL erstellt.
Jetzt habe ich eine Qt Widgets-Anwendung erstellt und es funktioniert nicht mehr.
Was fehlt mir hier?

+1

Funktioniert gut für mich. Irgendwelche Kompilier-/Anwendungsausgaben, die etwas Außergewöhnliches anzeigen? – deW1

+1

Können Sie es mit der einfachsten Website versuchen, die Ihnen einfällt?

Heading

Etwas

deW1

+0

Es ist nicht unabhängig von funktioniert, was ich in dieser Datei setzen. Es scheint, dass die Datei nicht gefunden werden kann. Wenn ich versuche, die Datei mit QFile und QTextStream zu öffnen und zu lesen, sagt die Anwendung "QIODevice :: read (QFile," qrc: \ html \ index.html "): Gerät nicht geöffnet". Wenn ich ein neues Qt Quick-Projekt erstellen und die erstellte .qrc-Datei verwenden, funktioniert alles einwandfrei. Ich weiß nicht, warum das funktioniert und meine ursprüngliche Qt Widgets Anwendung nicht. – TorbenJ

Antwort

3

Wie vorgeschlagen, werde ich die Lösung aus den obigen Kommentaren als eine Antwort für zukünftige Benutzer mit dem gleichen Problem setzen.

"[...] Ich reinigte zufällig das Projekt und schlug" Run qmake "und lief dann das Projekt erneut. Dieses Mal arbeitete es mit einer der drei URLs. Das ist so frustrierend. Vielen Dank für Ihre Hilfe @ deW1 "

+0

Auch 'view.load (QUrl (":/html/index.html "));' wird nicht funktionieren, es muss das 'qrc: /' Protokoll haben. –

Verwandte Themen