我正在尝试将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函数来放置容器,但它没有起到作用。
发布于 2017-05-25 22:18:57
我也面临着同样的问题。我发现解决这个问题的唯一方法是处理宿主widget的resizeEvent,并根据新的大小重置根qml组件的width和height属性。试试这个:
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()));
}https://stackoverflow.com/questions/42728417
复制相似问题