2013-06-26 11 views
10

ho questo pezzo di codice QML:Come riutilizzare il codice in QML

Column { 
     spacing: units.gu(2) 
     anchors { 
      fill: parent 
      centerIn: parent 
     } 
     Row { 
      spacing: units.gu(4) 
      ... 
     } 
     Row { 
      spacing: units.gu(4) 
      ... 
     } 
     Row { 
      spacing: units.gu(4) 
      ... 
     } 
     Row { 
      spacing: units.gu(4) 
      ... 
     } 
    } 

sulle migliori pratiche di programmazione QML, come riutilizzare il codice per evitare attributi duplicati di elementi comuni? come nell'esempio sopra, evita "spacing: units.gu (4)" di Rows ".

risposta

10

Inserire il codice in un file qml separato e utilizzare tale nome di file come elemento. per esempio.

// file MyCustomRow.qml

Row { 
     spacing: units.gu(4) 
     ... 
    } 

Poi, nel tuo altro file QML:

Column { 
     spacing: units.gu(2) 
     anchors { 
      fill: parent 
      centerIn: parent 
     } 
     MyCustomRow{ 

     } 
     MyCustomRow{ 

     } 
     MyCustomRow{ 

     } 
     MyCustomRow{ 

     } 
    } 

Infatti è possibile utilizzare un ripetitore:

Column 
{ 
      spacing: units.gu(2) 
      anchors 
      { 
       fill: parent 
       centerIn: parent 
      } 

      Repeater 
      { 
       model : 5 
       MyCustomRow 
       { 

       } 
      } 
} 

Edit:

Per farlo in un unico file (come richiesto nel commento) è possibile utilizzare Qml Component elemento con Loader elemento:

Column { 
     spacing: units.gu(2) 
     anchors { 
      fill: parent 
      centerIn: parent 
     } 


     Component 
     { 
     id : myCustomRow 
     Row 
     { 
      spacing: units.gu(4) 
      ... 
     } 
     } 

     Loader { 
     sourceComponent : myCustomRow 

     } 
     Loader { 
     sourceComponent : myCustomRow 

     } 
     Loader { 
     sourceComponent : myCustomRow 

     } 
     Loader { 
     sourceComponent : myCustomRow 

     } 
    } 
+0

Interessante. E come farlo nello stesso file? –

+1

@ayr_ton Ho fatto una modifica. Dai un'occhiata. –