2017-10-05 72 views
0

我想要一個矩形來自動調整自己的大小以適合其視覺兒童。如果沒有邊界,那麼下面的偉大工程:如何保持qml從重疊內容的矩形邊框?

Rectangle { 
    width: childrenRect.width+(border.width*2) 
    height: childrenRect.height+(border.width*2) 
    ... 
} 

然而,如果該矩形邊框,孩子們會重疊它。我試圖將孩子們包裝在一個容器中失敗(在下面的例子中爲Column),並使用anchor.margins將容器轉移到錯過矩形的邊界。

import QtQuick 2.7 
import QtQuick.Controls 2.0 
import QtQuick.Layouts 1.3 

ApplicationWindow { 
    visible: true 
    width: 600; height: 600 

    Rectangle { 
     id: rect 
     border.width : 20 
     border.color: "yellow" 
     clip: true 

     width: childrenRect.width+(border.width*2) 
     height: childrenRect.height+(border.width*2) 

     Column { 
      anchors.margins: rect.border.width // does not work 
      Text { height: 40; text: "FoooooooooooooooMumble" } 
      Text { height: 40; text: "Bar" } 
      Button { height: 40; text: "press me" } 
     } 
    } 
} 

Results from above code

有人建議如何做到這一點?

+1

嗯,我想通了。 「邊距」錨點相對於相應的邊緣錨點,並且如果邊緣邊界未定義,則忽略相應的「邊距」。因此,如果anchors.margins被設置,那麼anchors.left和anchors.top也必須被設置(或者,我假設,右邊和底部) – jimav

回答

1

對於anchors.margins工作,必須設置邊框錨(邊距空間是相對於那些)。例如:

Column { 
      anchors.margins: rect.border.width 
      anchors.left: rect.left 
      anchors.top: rect.top 
      ... 
}