2016-01-23 134 views
1

TextField置于RowLayout之后,我无法再调整TextField的大小。我试图设置anchor s为TextField来填充RowLayout的左侧和它的中心,使它成为的width的一半,但它变得刚好大于它的一半。TextField无法在RowLayout内调整大小

现在我试图将TextFieldwidth绑定到RowLayout,但该元素仍然没有调整大小。当我从其父母那里取TextField时,它的大小调整正常。这是一个Qt的错误还是我忘记了一些东西?

这里是我所得到的PIC:

enter image description here

import QtQuick 2.3 
import QtQuick.Controls 1.2 
import QtQuick.Layouts 1.2 

ApplicationWindow { 
    visible: true 
    width: 210 
    height: 160 

    RowLayout { 
     x: 15 
     y: 21 
     width: 181 
     height: 23 

     TextField { 
      id: first 
      width: parent.width /2 
      height: parent.height 
     } 

     TextField { 
      id: second 
      width: parent.width /2 
      height: parent.height 
     } 
    } 

    TextField { 
     id: result 
     x: 15 
     y: 55 
     width: 181 
     height: 23 
     placeholderText: qsTr("Result") 
    } 
} 
+0

您还没有考虑'spacing'默认为不为零。另外,'anchors.fill:parent'布局:设置'x' /'y'就是不好的设计。 – BaCaRoZzo

+0

写下自己的答案。我的规则RowLayout/ColumnLayout是不使用宽度/高度。只能使用implicitWidth/implicitHeight,Layout.fillWidth,Layout.preferredWidth,Layout.minimumWidth等。 – Velkan

+0

最后一件事:当RowLayout真的真的转向你时,将它包装到一个Item中。 – Velkan

回答

2

正如@KernelPanic说,我对TextField小号使用Layout.fillWidth,一切都开始正常工作。

根据Qt文档:

如果此属性为true,则该项目将尽可能宽,同时尊重给定的约束。如果该属性为false,则该项目的固定宽度将设置为首选宽度。默认值为false,除了布局本身,默认为true。

而且

尊重给定约束

正是我需要