2017-03-10 13 views
1

QWidgetにQMLviewを埋め込むことを試みています。メインウィンドウ内のビューを問題なく表示することができましたが、サイズを変更するたびにqmlビューは更新されません。QQuickViewのコンテンツのサイズが正しく設定されていない

ビュー正しくリサイズここで

は、そのビューを描画するコードではありません

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関数を使ってコンテナを入れようとしましたが、トリックはしませんでした。

+0

'view-> setResizeMode(QQuickView :: SizeRootObjectToView);'部分なしで試したことがありますか? – dtech

+0

はい、私はまた、フラグを変更しようとしましたが、私は違いを気付かなかった。 – kabinja

答えて

2

私は同じ問題に直面しました。私がそれを修正するために見つけた唯一の方法は、ホストウィジェットのresizeEventを処理し、新しいサイズに従ってwidthheightのルート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())); 
} 
関連する問題