2013-02-19 76 views
1

我對QML非常陌生,而且我正努力在QML中定義基本佈局。如何將一個元素定位到窗口,以便在窗口被用戶調整大小時調整大小?我想添加一個矩形來填充窗口中的所有可用空間,但是我還沒有找到從qml文件中完成此操作的方法。到目前爲止我發現的所有例子都使用固定的寬度和高度,但這意味着當窗口大小改變時,元素將保持其預設大小。將QML元素錨定到窗口

回答

3

針對您的具體問題:

  1. 所有基於他們的父母(兄弟姐妹)的元素。
  2. 總是讓您的頂級qml elemnt填充查看器空間,如here所述。

添加到它。無論何時您需要做這樣的調整,您都需要從一方到另一方告知幾何變化。我的意思是,從qml到C++或從C++到qml。

告訴QML有關在上面的窗口大小調整:在QML

你的頂級父元素不會得到有關widget的調整的任何信號。你需要手動完成。

  1. 要獲得信息頂部部件實際上已經重新大小,你需要實現resizeEvent功能。

  2. 每當你的實現被調用,您需要的信號,一些大小調整已經發生了QML側,因此頂部QML家長也應該調整自己。

告訴C++約在頂部QML元素調整:

同樣,你的C++部件將無法獲得有關頁首QML元素的大小調整的任何信號。您需要手動執行:

  1. 將C++端的類暴露給qml。
  2. 每當top qml元素髮生變化時,調用此類的函數來通知此更改,並要求它調整頂部小部件的大小。

您可以瞭解這些方法的基本概念herehere

1

簡單的答案,這是使用

Item { 
    anchors.fill: parent 
} 

這是equivelent到

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

其中母公司是你想要的物品被內部固定的對象。雖然這通常是父母,但它在技術上可以固定在任何東西上。

我想補充一點,通常你靜態大小的頂級元素,因爲在一個QML應用程序的默認選項,應用程序窗口將大小根元素在你的主QML文件大小。如果你想做一些更棘手的事情,你需要修改爲你的應用程序生成QDeclarativeView的C++。

+1

這對於其他元素內部的元素是正確的,但是當窗口調整大小時要調整根元素的大小,我必須將QDeclarativeView的調整大小模式設置爲SizeRootObjectToView – svb 2013-02-20 08:41:29