splincodewd
@splincodewd
Developer

Как скомпилировать Qt WebEngine?

Содержание проекта

.pro file
TEMPLATE = app
QT += webengine
QT += qml quick
CONFIG += c++11
SOURCES += main.cpp
RESOURCES += qml.qrc
CONFIG+=release


main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QtWebEngine>

int main(int argc, char **argv) {
    QGuiApplication app(argc, argv);
    QtWebEngine::initialize();

    QQmlApplicationEngine appEngine;
    appEngine.load(QUrl("qrc:/main.qml"));

    return app.exec();
}


main.qml
import QtQuick 2.1
import QtQuick.Controls 1.1
import QtWebEngine 1.1

ApplicationWindow {
    width: 680
    height: 520
    visible: true
    title: qsTr("Hello World")
    WebEngineView {
        visible: true
        id: webview
        url: "http://www.qt.io"
        anchors.fill: parent
    }
}


Когда нажимаем Ctrl+R (собираем) в Qt, то приложение отображается как надо и показывает сайт
120630d61bea4ffdbc8b948fca25b1c5.png

Но когда открываем директорию, куда собирается проект, то есть место куда скомпилировался бинарник, открываем его, и результат пустое окно, почему и как исправить?
cef6558024224ea18248ec4ce94f140d.png
  • Вопрос задан
  • 2193 просмотра
Решения вопроса 2
@Delta6
Кинь всю папку из %путь_к_Qt%/bin в твою папку с бинарём, потом запустить приложение и дождись первого обращения к WebEngine. У тебя 2 пути, первый более правильный, но медленный, второй топорный:
1. В process explorer посмотри все зависимости(их много, включая один exe-файл, у которого свои зависимости) и оставь нужные.
2. Выбери все файлы в папке с бинарем и удали. Те, что дергаются exe-файлом, ты не сможешь удалить :)

А почему так происходит: банально не хватает нужных dll и одного бинарика. QML не завершает аварийно программу, если что-то не нашел -- он просто ломается и вместо ожидаемой вьюхи у тебя белый виджет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы