首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QQuickView内容未正确调整大小

QQuickView内容未正确调整大小
EN

Stack Overflow用户
提问于 2017-03-11 05:59:40
回答 1查看 984关注 0票数 3

我正在尝试将QMLview嵌入到QWidget中。我设法在主窗口中显示视图,没有任何问题,但是每当我调整它的大小时,qml视图都不会更新。

视图未正确调整大小

下面是绘制该视图的代码

mainwindow.cpp

代码语言:javascript
复制
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

代码语言:javascript
复制
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函数来放置容器,但它没有起到作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-25 22:18:57

我也面临着同样的问题。我发现解决这个问题的唯一方法是处理宿主widget的resizeEvent,并根据新的大小重置根qml组件的widthheight属性。试试这个:

代码语言:javascript
复制
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()));
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42728417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档