2016-11-03 19 views
1

私はQt qmlを使用して、非常に単純なユーザーインターフェイスを設計しています。次のようにQMLは次のとおりです。ボタンを上にあるテキストボックスに合わせてサイズを合わせる

import QtQuick 2.0 
import QtQuick.Layouts 1.1 
import QtQuick.Controls 1.4 

Rectangle { 
    width: 800; height: 600  

    ColumnLayout { 
     anchors.centerIn: parent 
     spacing: 25 

     TextField { 
     placeholderText: qsTr("User name") 
     width: 200 
     } 

     TextField { 
     placeholderText: qsTr("Password") 
     width: 200 
     echoMode: TextInput.Password 
     } 

     RowLayout { 
      Button { 
       text: "Log In" 
      } 

      Button { 
       text: "Cancel" 
      }   
     } 
    } 
} 

私がやろうとしていますどのようなボタンの両方が同じサイズを取り、彼らが水平にTextFieldコンポーネントとして同じ量の空間を占有していることを確認しています。 QMLを使用してこれを達成することは可能ですか?

+0

必要な出力の画像を提供できますか? – user2436719

+0

フロリアンからの答えが私の問題を解決しました。 – Luca

答えて

1

ただ、希望の幅にレイアウトのサイズを変更し、添付されたプロパティーLayout.fillWidth: trueを使用して、アイテムのサイズを拡大/縮小します。

import QtQuick 2.0 
import QtQuick.Layouts 1.1 
import QtQuick.Controls 1.4 

Rectangle { 
    width: 800; height: 600 

    ColumnLayout { 
     width: 200 
     anchors.centerIn: parent 
     spacing: 25 

     TextField { 
      placeholderText: qsTr("User name") 
      Layout.fillWidth: true 
     } 
     TextField { 
      placeholderText: qsTr("Password") 
      Layout.fillWidth: true 
      echoMode: TextInput.Password 
     } 
     RowLayout { 
      Button { 
       text: "Log In" 
       Layout.fillWidth: true 
      } 

      Button { 
       text: "Cancel" 
       Layout.fillWidth: true 
      } 
     } 
    } 
} 

PS:それは、Layout.fillWidthLayout.fillHeightがデフォルトで設定されている子レイアウトでは不要だが、単に説明するためにあなたの例を更新しました。

ご質問がございましたら、お気軽にお問い合わせください。

+0

これは素晴らしいことです!本当にありがとう。 – Luca

0

はい、あなたは自分のTextField

TextField { 
    id: myTextField 
    ... 
} 

idを与え、あなたのButtonであなたのTextFieldの幅を参照する必要があります。

Button{ 
    ... 
    width: myTextField.width 
} 
+0

これを行うと、2つのボタンが重なり合うだけです。それらを整列させるためのより良い方法が必要です。また、スペーシングがある場合は、すべてが非常に醜いです。私は 'GridLayout'を試しましたが、今のところサイコロはありません。 – Luca

関連する問題