Добрый день. Стоит такая задача. Написать приложение на Qt для Android, чтобы можно было просматривать gif анимации. В свою очередь гифки скачиваются по url. Если Gif скачать как обычный файл, то мы ждем пока скачается весь файл(а вес 5-10 мб, что для мобильного интернета многовато), а потом уже можно будет его просмотреть. Вариант это открывать gif через браузер, то есть webview. Тогда мы сможем смотреть анимацию пока она будет качаться. WebKit и WebKitWidgets не поддерживаются на android. Пишут на форумах, что только WebView - QML и WebEngine Qt. С WebEngine возникли проблемы, компилятор не хотел делать билд под Android из-за того, что он не мог найти модуль(скачивал даже последнию версию Qt, ставил на MacOS - не помогло).
Тогда обратил внимание на QML. С ним раньше не работал и опыта мало. Но нашел пример интеграции QML в Qt с помощью QDeclarativeView и QQuickEngine на офф. сайте. И тут возникла проблема. QQuickEngine загружает GIF как надо, но только он рисует поверх(overlay) содержимого Widget, что мне не подходит.
QQuickView *quickView = new QQuickView;
quickView->setResizeMode(QQuickView::SizeRootObjectToView);
quickView->setSource(source);
m_layout->addWidget(QWidget::createWindowContainer(quickView));
QDeclarativeView встраивается в виждет в Qt и рисует зеленый квадрат:
QDeclarativeView *qmlView = new QDeclarativeView(QUrl("qrc:/opnhtml.qml"));
qmlView->setResizeMode(QDeclarativeView::SizeViewToRootObject);
vbox->addWidget(qmlView,0,Qt::AlignCenter);
qml opnhtml.qml (просто пример, чтобы просмотреть откроется ли страничка)
import QtQuick 1.0
//import QtWebKit 1.0
Rectangle {
width: 400
height: 400
color: "green"
/*
WebView {
id: web_view1
anchors.fill: parent
url: "http://google.ru"
}
*/
}
Но когда я в qml файле раскомментирую хотя бы
import QtWebKit 1.0. На экране ничего, просто белый фон. И соответственно если убрать и комментарии на теле
WebView все тот же белый экран и ничего не происходит. Подскажите, пожалуйста, решение. Если можно загружать и проигрывать gif одновременно, не открывая его как страничку(без использования QML, WebEngine), скиньте пример или в какую сторону копать напишите. Или что неправильно сделал с QML WebView?