QWidget 内に QML マップを表示するアプリケーションがあります。Qwidget は、マップがほとんどのスペースを占有できるようにするために、スプリッターを使用して水平レイアウトの一部を形成します。私のUI構造は下の画像のようになります。
wdgtMapは、ウィンドウ コンテナーとして使用されるものです。そこに(デザイナーで)テキスト編集をドロップすると、テキスト編集は期待どおりにウィジェットを埋め、アプリケーションのサイズが変更されて最大化されると拡張します。
コードでマップ用のウィンドウ コンテナーを作成すると、マップは wdgtMap のサイズに拡張されません。私は無駄に多くの異なるオプションを試しました。
qmlMapObject = qvMap->rootObject();
// Set the context and include properties.
QQmlContext *ctxt = qvMap->rootContext();
ctxt->setContextProperty("asset_class", &clAsset);
// Set the source after defining the context.
qvMap->setSource(QUrl("qrc:/main.qml"));
// Set widget properties.
QWidget *qvMapContainer = QWidget::createWindowContainer(qvMap, ui->wdgtMap);
qvMapContainer->setMinimumSize(20,20);
qvMapContainer->setSizePolicy(QSizePolicy::MinimumExpanding,QSizePolicy::MinimumExpanding);
private セクションの下のヘッダー ファイルで、次のようにします。
QQuickView *qvMap = new QQuickView();
QObject *qmlMapObject;
2 番目の画像は最終的に完成したものです。右上のブロックに小さな地図が表示されています。アプリのサイズが変更されると、そのすべてのスペースを埋めて拡大/縮小したい。
正しい方向へのポインタは大歓迎です。