【发布时间】:2018-03-05 09:18:24
【问题描述】:
我正在尝试将对象列表从 python 传递到 qml。在 qml 方面,我将解释这些信息并使用 repeater 和 listmodel 元素,以类似表格的方式显示这些信息。
如果我只是传递一个对象或整数列表,我可以读取 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 完全陌生。如果我在我的概念中犯了任何基本错误,请告诉我
【问题讨论】:
-
您可以展示如何将 DisplayComponent 传递给 qml 和 qml。
-
感谢@folibis 的链接。我已根据您提供的链接进行了一些更改。 eyllanesc 我已经相应地编辑了我的问题。我可以将列表传递给 qml,但似乎无法读取该对象。有什么想法吗?