2017-07-30 87 views
0

目前我正在通過PyQT與QT框架合作。我創建了一個自定義對象(從QObject繼承),並可以按照預期從QML使用它。我還在QML中創建了一個委託,該委託負責此對象的可視化表示,並且也按預期工作。如何在QML中使用ListView和自定義對象?

但是,現在我想在ListView中再次顯示這些對象中的幾個對象(在委託中定義的表示)(再次在QML中)。我似乎無法弄清楚這是怎麼可能的,所以有人能給我一些指示?

提前感謝您的時間。

編輯:爲了迴應一些反應,我會試着澄清我想通過一個例子來實現更多一點。在這裏,我們有一個矩形(這只是爲了清晰起見,通常這將是我的自定義對象),它具有一個自定義屬性(customText)和一個簡單定義佈局的委託,兩者都可以工作。

ListView { 
    height: 1000 
    model: Rectangle { 
      property string customText: "1.jpg" 
     } 
    delegate: Rectangle { 
     width: 200 
     height: 200 
     Text { 
      anchors.fill: parent 
      text: model.customText 
     } 
    } 
} 

不過,現在我基本上不想一個矩形(這不會使一個ListView有很大的意義),但有幾個人在例如列表。我會想到的是,我將不得不改變模式,這樣的事情,但後來我得到「不能指定多個值,以奇異特性」

model: [Rectangle { 
      property string customText: "1.jpg" 
     }, 
     Rectangle { 
      property string customText: "1.jpg" 
     }, 
     Rectangle { 
      property string customText: "1.jpg" 
     }] 

請讓我知道如果您需要任何進一步信息。

+0

你試過了什麼? – GrecKo

+1

爲什麼不在這裏發佈與該問題相關的所有代碼而不是_explaining_呢? – folibis

+0

其中一種方法是從'QAbstractListModel'繼承並定義一個模型,該模型提供這些對象中的每一個的屬性。 – Velkan

回答

1

您可以使用ListModelListElement qml類型。定製模型示例實現:

ListModel { 
    id: modelElement 
    ListElement { customText : "1.jpg"} 
    ListElement { customText : "2.jpg"} 
    ListElement { customText : "3.jpg"} 
    ListElement { customText : "4.jpg"} 
} 

ListView { 
    height: 1000 
    model: modelElement 
    delegate: Rectangle { // You can use your custom object here 
     width: 200 
     height: 200 
     Text { 
      anchors.fill: parent 
      text: customText 
     } 
    } 
} 

ListElement表示將使用ListView控件或Repeater項目Ref顯示的列表項。

您可以將自定義對象定義爲delegate,然後將customText指定爲Text元素。

相關問題