2016-01-23 2 views
1

После помещения TextField в RowLayout Я не могу изменить размер TextField. Я попытался установить anchor s за TextField, чтобы заполнить левый фланг RowLayout и его центр, чтобы он составлял половину widthRowLayout, но это стало чуть больше половины.TextField не может быть изменен в пределах RowLayout

Прямо сейчас я пытаюсь связать widthTextField с номером RowLayout, но элемент все равно не изменяется. Когда я беру TextField из своего родителя, он изменяет размер штрафа. Это ошибка Qt или я что-то забыл?

Вот ПОС, что я получаю:

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, я использовал Layout.fillWidth на TextField с и все стало работать нормально.

Согласно Qt документации:

Если это свойство истинно, элемент будет как можно шире при соблюдении заданных ограничений. Если свойство ложно, элемент будет иметь фиксированную ширину, установленную на предпочтительную ширину. Значение по умолчанию - false, за исключением самих макетов, для которых по умолчанию используется значение true.

И

уважая данные ограничения

было именно то, что мне нужно было

Смежные вопросы