我遇到了一个模糊的问题(bug?)用我的Python3 QML程序。 我用一个定制的get方法实现了一个QAbstractListModel来获取底层的QObject项。当我试图在QML的两个不同位置获取相同的Python QObject时,我得到:
TypeError: unable to convert a Python 'QMyItem' object to a C++ 'QObject*' instance
get方法如下所示:
^{pr2}$像这样的模型:
ComboBox {
model: mymodel
textRole: 'name'
onActivated: mymodel.item = model.get(index)
onModelChanged: currentIndex = getCurrentIndex(mymodel, mymodel.item)
}
这个问题实际上与我检索QObject的方式无关。它实际上似乎是关于Python到QML的转换。就好像转换器保存了一个已经传递的引用的列表,并且不知何故失去了同步。在
我现在有一个显示错误的最小示例。从https://github.com/sturmf/python_samples.git获取源代码并进入pyqt_combobox_qabstractlistmodel
文件夹。在这里用python3 main.py
开始示例。在显示的组合框中,您可以选择项目three
,但是项目one
在控制台上给您一个错误。原因是第一项已经从Python传递到QML,第二次就不起作用了。在
也许转换后的QObject在QML端被垃圾收集了?在
所以问题是在我把我的对象交给QML之后,QML端的垃圾收集了它们。原因是我从来没有为这个qo对象设置一个父对象。在
相关问题 更多 >
编程相关推荐