2016-02-22 27 views
8

Per esempio, questo funziona:Qt5 QML, quando utilizzare ColumnLayout vs Column?

import QtQuick 2.5 
import QtQuick.Controls 1.4 
import QtQuick.Controls.Styles 1.4 
import QtQuick.Layouts 1.2 

ApplicationWindow 
{ 
    visible: true 
    width: 640 
    height: 480 
    title: qsTr("Hello World") 

    function thingWidth() 
    { 
     return width*80/100 
    } 

    Column 
    { 
     spacing: 10; 
     anchors.horizontalCenter: parent.horizontalCenter 

     Thing { color: "red"; width: thingWidth(); } 
     Thing { color: "yellow"; width: thingWidth(); } 
     Thing { color: "green"; width: thingWidth(); } 
    } 

} 

Ma il cambiamento Column-ColumnLayout e non lo fa (finestra ridimensionamento causa di layout ad andare male).

qualsiasi aiuto, grazie.

EDIT 1:

Ecco anche Thing.qml come richiesto,

import QtQuick 2.0 

Item { 
    property alias color: rectangle.color 
    width: 50; height: 50 

    Rectangle 
    { 
     id: rectangle 
     border.color: "white" 
     anchors.fill: parent 
    } 
} 

Sembra che il mio post è in gran parte del codice. Sì, bambinaia lo fa! questo perché le persone inviano il codice qui.

+1

Per favore, a) fornire il codice per "Cosa" o b) sostituirli con qualcosa a cui abbiamo accesso, come "Rettangolo". – Mitch

+0

terminato. mi dispiace per la tata –

risposta

3

partire dalla documentation di Column:

colonna è un tipo che posiziona i suoi elementi figlio lungo una singola colonna. Può essere usato come un modo conveniente per posizionare verticalmente una serie di elementi senza l'uso di ancore.

Inoltre, facilita le transizioni durante l'inserimento, la cancellazione e così via. Allega anche properties agli elementi per dare loro nozioni sulle loro posizioni.

D'altra parte, this è la documentazione di GridLayout (Si prega di notare che ColumnLayout è un programma di utilità vantaggio, ma non è niente di più di una griglia con una colonna, come dalla sua documentation).
Ha un insieme completamente diverso di proprietà, nonché proprietà associate, completamente orientate alla disposizione degli articoli.

Suppongo comunque che la pagina più interessante della documentazione sia that.
ho semplicemente citano: articoli

posizionatore sono oggetti contenitore che gestiscono le posizioni di elementi in un'interfaccia utente dichiarativa. I posizionatori si comportano in modo simile ai gestori di layout usati con i widget Qt standard, tranne per il fatto che sono anche contenitori a sé stanti.

I posizionatori facilitano il lavoro con molti articoli quando devono essere disposti in un layout normale.

Qt Quick Layouts può anche essere utilizzato per organizzare elementi Qt Quick in un'interfaccia utente. Gestiscono sia le posizioni che le dimensioni degli elementi su un'interfaccia utente dichiarativa e sono adatti per interfacce utente ridimensionabili.

prega di notare che un Column è un Positioner, mentre un ColumnLayout è un Layout. Quando usarli dipende principalmente dal tuo obiettivo, come al solito.

+1

Grazie per la risposta. A quanto ho capito, ai posizionatori come 'Column' si possono dire le posizioni, ma i layout come' ColumnLayout' devono calcolare la posizione da soli. L'impostazione di 'width' all'interno di' ColumnLayout' è errata, ma in una 'Column' va bene. –

+1

All'interno dei layout sono presenti molte proprietà collegate interessanti come 'Layout.preferredwidth'. Per favore, vedi la documentazione collegata. – skypjack

+0

I layout sono stati aggiunti una volta che Qt deve supportare gli schermi con dimensioni molto diverse, ad esempio dopo l'età della Nokia. In effetti hai la proprietà 'fill' che manca nell'altra implementazione. Questo è anche sottolineato nella documentazione quando dice che sono "adatti per ** interfacce utente ridimensionabili **" – BaCaRoZzo

Problemi correlati