1

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 番目の画像は最終的に完成したものです。右上のブロックに小さな地図が表示されています。アプリのサイズが変更されると、そのすべてのスペースを埋めて拡大/縮小したい。

正しい方向へのポインタは大歓迎です。

ここに画像の説明を入力

ここに画像の説明を入力

4

1 に答える 1