ios — Qml / Qt / C ++: QQuickView в виджете, не может получить правильную позицию

Я реализую простую программу с QT5.5, которая содержит окно HTML (QWebview), как на следующем снимке экрана:

HTML-окно с правой стороны

Теперь я хочу, чтобы программа также была установлена ​​для iOS, например для iPad. Я обнаружил, что класс QWebview недоступен для мобильной системы, поэтому мне пришлось изменить свое окно HTML на QQuickView с файлами QML (или есть лучший способ?). Я нашел следующий код онлайн:

QQuickView *view = new QQuickView();
QWidget *container = QWidget::createWindowContainer(view, this);
container->setMinimumSize(200,400);
container->setMaximumSize(200,400);
container->setFocusPolicy(Qt::TabFocus);
view->setSource(QUrl("qrc:///webview.qml"));
layout->addWidget(container);

Затем я добавил контейнер в главное окно.
Webview.qml:

import QtQuick 2.5
import QtWebView 1.0
Rectangle {
id: rectangle
width: 200
height: 400
WebView {
id: webview
url: "file:///test.html"anchors.fill: parent
width: 200
height: 400
}
}

Но почему-то я не могу сделать верный макет.
HTML окно на iOS
За контейнером находится пустой / белый прямоугольник, и контейнер также не находится в окне HTML справа от того места, где он должен быть. Когда я изменяю ширину и высоту прямоугольника в файле qml, он изменяет только размер веб-просмотра, а не белый фон.

Может кто-нибудь сказать мне, как я могу сделать это правильно? Я также использовал container->setParent() но вид всегда слева.

1

Решение

Видимости авторского кода, возможно, недостаточно, но в целом проще установить виджет в макете с определенным выравниванием. Таким образом, вы даете команду виджету находиться на определенной стороне и делаете так, чтобы размещение не зависело от координат / размера виджета хоста и т. Д. layout переменная предполагается горизонтальной рамкой или QHBoxLayout.

// make sure that QHBoxLayout* layout = new QHBoxLayout(this);
// or set the horizontal layout somehow else
QQuickView *view = new QQuickView();
QWidget *container = QWidget::createWindowContainer(view, this);

container->serFixedWidth(200); // the layout is horizontal
// and we *may* want to fix the width

container->setFocusPolicy(Qt::TabFocus);
view->setSource(QUrl("qrc:///webview.qml"));
layout->addWidget(container, Qt::AlignRight); // align to the right

Имейте в виду, что остальные горизонтальный макет должен быть заполнен так, с учетом относительных позиций в нем.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]