2017-10-05 108 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 
      ... 
}