2011-06-02 15 views
17

QML öğesinin otomatik olarak tüm çocuğunuzun içine sığması için öğeyi uzatması nasıl mümkündür? Ve boşluk nasıl belirtilir? Örneğin, bir metnin etrafında bir dikdörtgen olmasını isterim. Dikdörtgenin bazı iç boşlukları olmalıdır.Tüm çocukları içerecek şekilde germe elemanı

Aşağıdaki yazıyı yazarsanız, dikdörtgenin boyutu 0,0'dır. Ben How to make QML items to grow to fit contents? önerildiği üzere, Column elemanı kullanarak bunu düzeltmek için çalışırsanız, o zaman bütün pencere/ebeveyn yoluyla bir sütun olsun

Rectangle { 
    color: "gray" 
    anchors.centerIn: parent; 

    Text { 
     text: "Hello" 
    } 
} 

,

Column { 
    anchors.centerIn: parent 

    Rectangle { 
     color: "gray" 
     anchors.fill: parent 
    } 

    Text { 
     anchors.centerIn: parent 
     text: "Hello" 
    } 
} 

Düzenleme:

Column yerine Flow öğesini kullanmayı denedim, ancak daha sonra bir satır var. ole penceresi/ana.

cevap

36

Bunun için childrenRect özelliğini kullanabilirsiniz: Ancak

import QtQuick 1.1 

Rectangle { 
    width: 320 
    height: 200 

    Rectangle { 
     color: "BurlyWood" 
     anchors.centerIn: parent 
     width: childrenRect.width + 20 
     height: childrenRect.height + 20 

     Text { 
      id: hello 
      x: 10 
      y: 10 
      text: "Hello" 
     } 

     Text { 
      anchors.left: hello.right 
      anchors.leftMargin: 10 
      anchors.top: hello.top 
      text: "World" 
     } 
    } 
} 

, unutmayın kombine ile childrenRect kullanılarak Doğrudan çocuklardan birinde anchors.centerIn: parent kullanılması, bir bağlama döngüsü hakkında uyarı verir.

+0

'main.qml: 6: ReferenceError: childrenRect tanımlı değil '. Sorun nedir? Qt 5.3, QtQuick 2.3 – ManuelSchneid3r

+0

@ ManuelSchneid3r Hmm, Sorununuzu yeniden oluşturamıyorum. QtQuick 2.3'e aktarımı değiştirdikten sonra yukarıdaki kodu qdscype ile çalıştırarak Qt 5.5 ile denedim. İyi çalıştı. –

+0

Sorun, bunu Window'scope'ta denediğimdi. Orada, childrenRect tanımlanmamış. – ManuelSchneid3r

4

width ve height elle çalışır ayarlama, ama biraz çirkin:

Rectangle { 
    color: "gray" 
    width: label.width+20 
    height: label.height+20 
    anchors.centerIn: parent 

    Text { 
     id: label 
     anchors.centerIn: parent 
     text: "Hello" 
    } 
} 
İlgili konular