簡體   English   中英

Qt:使用Qwidget窗口容器的布局

[英]Qt: layouts with a Qwidget window container

我有一個在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);

在私有部分下的頭文件中,以下內容:

QQuickView *qvMap = new QQuickView();
QObject *qmlMapObject;

第二張圖片是我最終得到的。你可以看到右上方的小地圖。 我想讓它填充所有空間並在應用程序調整大小時展開/縮小。

指向正確方向的指針將非常受歡迎。

在此輸入圖像描述

在此輸入圖像描述

通過以下說明:

QWidget *qvMapContainer = QWidget::createWindowContainer(qvMap, ui->wdgtMap);

你只是創建一個名為qvMapContainer的小部件,其內容為qvMap並且作為父ui->wdgtMap ,一個小部件是另一個的子ui->wdgtMap ,只確定該小部件的位置是相對於父節點的,因此映射是在左上角,每個小部件的初始位置是(0,0)。

如果您希望窗口小部件占用父窗口的大小,則必須通過布局執行此操作。

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);
QVBoxLayout *lay = new QVBoxLayout(ui->wdgtMap);
lay->addWidget(qvMapContainer);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM