2016-12-27 17 views
0

アンカーがQML(Qt Quick 2.0)でどのように機能するかを理解しようとしています。私はこのようにシンプルなアイテムを持っている:アンカーの設定時にQMLが幅と高さを無視します

AddButton.qml:

main.qml:

私はこのようなファイルのメインQMLに追加

Item { 

    Button { 
     text: "ADD" 
     width: 100 
     height: 50 
    } 

} 

Item { 
    id: root 
    width: 800 
    height: 600 

    AddButton { 
     id: addButton 
    } 

} 

これは問題なく動作します。しかし、できるだけ早く私はアンカーを使用して、右下の隅にボタンを配置しようとして、ボタンが消える:

main.qml:

Item { 

    ..... 

    AddButton { 
     id: addButton 
     anchors.right: parent.right 
     anchors.bottom: parent.bottom 
    } 

} 

を私は幅を設定している場合にのみ戻ってくると、メインQMLファイルレベルの高さ:

main.qml:

Item { 

    ..... 

    AddButton { 
     id: addButton 
     width: 100 
     height: 50 
     anchors.right: parent.right 
     anchors.bottom: parent.bottom 
    } 

} 

S oアンカーを設定するとボタンが消えるのはなぜですか?そして、QMLファイルの幅と高さを設定せずに(基本的にAddButton.qmlで設定されているサイズを使用するようにするための方法はありませんか?)

答えて

3

カプセル化の問題は、カプセル化のItemには明示的widthheight。この場合、エンジンは「自然な」witdh/height、すなわちimplicitWidth/implicitHeightのプロパティを参照します。このような特性は、この特定の場合でさえ、ほとんどの場合、ゼロになる。したがって、カスタムタイプの次元はゼロです。

アイテムでButtonをカプセル化する必要はありません。 したがってAddButton.anchors.bottomは、順番にカプセル化Item

この約2つのものがありますが突出しているカプセル化Buttonの最上部、に実際にありますButtonの内部を非表示にしたい場合を除きます。

後者はあなたの欲求である場合は、これを試してみてください。

Item { 
    width: 100 //give the object a dimension! 
    height: 50 

    Button { 
     text: "ADD" 
     anchors.fill: parent 
    } 
} 

今、あなたはそれを固定することができ、そしてそれはどこか別の場所positionatedされることはありません。

+1

暗黙のプロパティは常に無視されますが、それらは非常に重要なので、初心者に話すことを検討してください。 – BaCaRoZzo

+0

あなたは正しいです!編集していただきありがとうございます;-) – derM

関連する問題