Qt

QtWebEngine -зависимости или не отображается при запуске скомпилированного бинарника из операционки.

Решил тут хелп для очередной проги запилить в формате html, так как удобнее создавать.

Ну и для отображения был выбран QtWebEngine, написал простейший примерчик:

(Кому нужно просто решить проблему — в самый конец)

QT += webengine

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QtWebEngine>
#include <QDebug>

int main(int argc, char *argv[])
{
    qDebug()<<"MAIN";
    QGuiApplication app(argc, argv);
    QQmlApplicationEngine engine;    
    QtWebEngine::initialize(); //-- обязательно, иначе крэш!
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    return app.exec();
}

import QtQuick 2.4
import QtQuick.Window 2.2
import QtWebEngine 1.1
Window {
    visible: true

    Rectangle {
        anchors.fill: parent
        color:"red"
    }

    WebEngineView {
          visible: true
          id: webview
          url: "http://pavelk.ru"
          anchors.fill: parent
      }
}

Компилирую, запускаю, всё ок.

Но при попытке запустить скомпилированный бинарник просто из операционки, а не из QtCreator, вижу пустое окно О_о

Внезапно…  Думал, раз сам пример запускается, значит и WebEngine должен, а так как фон остался красным, значит WebEngine полностью не прогрузился.

Смотрел уже и через ldd webengine , в выводе все библиотеки присутствуют.

Значит, WebEngine сам ещё что-то грузит.

Оказалось, так и есть и виновник нашёлся в папке с Qt по пути Qt/5.6/gcc_64/libexec с названием QtWebEngineProcess, но самое странное, через ldd ему то же всё хватало…

Видимо, подгружает позже…

Решил что бы наверняка добавить папку Qt с либами в глобальную переменную, в которой как раз по идее и должны храниться пути к либам LD_LIBRARY_PATH и это помогло!

[tip] В общем решение оказалось простым:
export LD_LIBRARY_PATH=/home/pavelk/Qt/5.6/gcc_64/lib:${LD_LIBRARY_PATH}
ну и запустить ldconfig.
Путь до Qt только на свой замените и что бы изменения вступили в силу необходимо перелогиниться.
В дальнейшем, что бы переносить прогу с QtWebEngine в qt.conf необходимо указать папку для libexec и в неё кинуть из Qt/5.6/gcc_64/libexec экзешник QtWebEngineProcess,
ну и разумеется установить lib со всеми webengine* модулями.
[/tip]

Вот как-то так =)

Related posts

QML Сделать задержку перед началом анимации

QtCreator не открывает диалог выбора файлов, проектов, не открывает проект

Сборка Qt 6.8 (Dev) из исходников в Docker контейнере (Linux)