Содержание QQuickView не изменяется должным образом

Я пытаюсь встроить QMLview в QWidget. Мне удалось отобразить представление внутри главного окна без каких-либо проблем, но всякий раз, когда я изменяю его размер, представление qml не обновляется.

Просмотр не изменяет размеры должным образом

Вот код, который рисует это представление

mainwindow.cpp

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);

QQuickView * view = new QQuickView ();
view->setSource (QUrl ("qrc:///main//qml-map") );
view->setResizeMode (QQuickView::SizeRootObjectToView);

QWidget * container = QWidget::createWindowContainer(view, this);

setCentralWidget(container);
}

main.qml

Item {
anchors.fill: parent
visible: true

Plugin {
id: osmPlugin
name: "osm"}

Map {
visible: true
anchors.fill: parent
plugin: osmPlugin
center: QtPositioning.coordinate(59.91, 10.75) // Oslo
zoomLevel: 10
}
}

Я также попытался поместить контейнер, используя функцию setLayout, но это не сработало.

1

Решение

Я столкнулся с той же проблемой. Единственный способ, который я нашел, чтобы исправить это, это обращаться с resizeEvent виджета хоста и сброса width а также height свойства корневого компонента qml в соответствии с новым размером. Попробуй это:

void MainWindow::resizeEvent(QResizeEvent* event)
{
QQuickItem* rootObject =  view->rootObject();
QSize newSize = event->size();
if(rootObject) rootObject->setProperty("width",QVariant::fromValue(newSize.width()));
if(rootObject) rootObject->setProperty("height",QVariant::fromValue(newSize.height()));
}
2

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

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

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