我正在嘗試將對象列表從python傳遞給qml。在qml方面,我將解釋這些信息並使用repeater和listmodel元素,以類似的方式在表格中顯示這些信息。將對象的python列表傳遞給qml
如果我只是傳遞一個對象或一個整數列表,我可以讀取qml端的信息。但是在嘗試傳遞對象列表時另有說明。我怎樣才能讀取qml端的對象列表?我必須使用不同的屬性嗎?
下面是我到目前爲止有:
class File(QObject):
def __init__(self, fileName, commentsStatus, diagnosisStatus, parent=None):
QObject.__init__(self, parent)
self.fileName = fileName
self.commentsStatus = commentsStatus
self.diagnosisStatus = diagnosisStatus
class DisplayComponent(QObject):
def __init__(self, parent = None):
QObject.__init__(self, parent)
self.list = [File("file 1", True, False), File("file 2", False, True)]
@pyqtProperty(QQmlListProperty)
def getDicomFilesList(self):
return QQmlListProperty(File, self, self.list)
暴露在QML側方式如下: context.setContextProperty("dicomFiles", displayComponent)
,這就是我如何在QML側讀取列表:
HanaContainer {
Text {
id: display
text: "no signal detected yet"
}
Component.onCompleted: {
console.log(dicomFiles.getDicomFilesList[1]) // prints File(0x7f8a6d454c70)
console.log(dicomFiles.getDicomFilesList[1].fileName) // prints undefined
}
}
ps:我完全是Qml和Qt5的新手。如果我做我的概念什麼根本性錯誤,請不要讓我知道
[鏈接](http://pyqt.sourceforge.net/Docs/PyQt5/qml.html) – folibis
您可以展示如何將DisplayComponent傳遞給qml和qml。 – eyllanesc
感謝@folibis for link.i根據您給出的鏈接進行了一些更改。 eyllanesc我已經編輯了我的問題。我可以將列表傳遞給qml,但似乎不能讀取對象。有任何想法嗎? – eugeneoei