簡體   English   中英

將QML元素錨定到窗口

[英]Anchor QML element to window

我是QML的新手,我正在努力在QML中定義基本布局。 如何將元素錨定到窗口,以便在用戶調整窗口大小時調整大小? 我想添加一個填充窗口中所有可用空間的Rectangle,但是我還沒有找到從qml文件中執行此操作的方法。 到目前為止我找到的所有示例都使用了固定寬度和高度,但這意味着當窗口大小發生變化時,元素將保持其預設大小。

針對您的具體問題:

  1. 根據父母(兄弟姐妹)錨定所有元素。
  2. 務必讓你的頂部QML elemnt填補觀眾空間,說明在這里

加入它。 無論何時需要進行這種重新調整,都需要從一方通知另一方關於幾何變化的信息。 我的意思是,從qml到C ++或從C ++到qml。

要告訴qml有關在頂部窗口中調整大小的信息:

qml中的頂級父元素不會獲得有關調整窗口小部件大小的任何信號。 你需要手動完成。

  1. 要獲取頂部窗口小部件實際調整大小的信息,您需要實現resizeEvent函數。

  2. 每當你的實現被調用時,你需要向qml方面發出一些調整大小已經發生的信號,因此top qml parent也應該自己調整大小。

告訴C ++在top qml元素中調整大小:

同樣,C ++中的小部件也不會獲得有關調整頂級qml元素大小的任何信號。 你需要手動完成:

  1. 將一個類從C ++側暴露給qml。
  2. 每當top qml元素發生更改時,調用此類的函數來通知此更改,並要求它調整頂部窗口小部件的大小。

您可以在這里這里獲得這些方法的基本概念。

對此的簡單回答是使用

Item {
  anchors.fill: parent
}

這是平等的

Item {
  anchors {
    top: parent.top
    left: parent.left
    right: parent.right
    bottom: parent.bottom
  }
}

其中parent是您希望項目錨定在其中的對象。 雖然這通常是父母,但它在技術上可以固定在任何東西上。

我想補充一點,通常你會靜態調整頂級元素的大小,因為使用qml應用程序中的默認選項,應用程序窗口的大小將達到主qml文件中根元素的大小。 如果你想做一些比較棘手的事情,你需要修改為你的應用程序生成QDeclarativeView的C ++。

暫無
暫無

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

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