Python3 QML programımda belirsiz bir soruna (hata?) Basıyorum. Temel QObject öğelerine ulaşmak için bir özel get yöntemiyle bir QAbstractListModel uyguladım. Ben QML iki farklı yerlerde aynı Python QObject elde etmeye çalışmak an alıyorum:Erişim Python QObject, QML'den ikinci çağrıya dönüştürülemiyor
@pyqtSlot(int, result=QMyItem)
def get(self, row):
return self._items[row]
Ve böyle bir model:
ComboBox {
model: mymodel
textRole: 'name'
onActivated: mymodel.item = model.get(index)
onModelChanged: currentIndex = getCurrentIndex(mymodel, mymodel.item)
}
TypeError: unable to convert a Python 'QMyItem' object to a C++ 'QObject*' instance
olsun yöntemi şöyle
Sorun aslında QObject'i alma şeklim ile ilgisiz. Python'dan QML dönüşümüne gerçekten benziyor. Dönüştürücü, halihazırda geçirilmiş referansların bir listesini tutar ve bir şekilde eşitlemeden çıkar.
Şimdi hatayı gösteren çok az örnek var. Kaynağı https://github.com/sturmf/python_samples.git'dan alın ve pyqt_combobox_qabstractlistmodel
klasörüne gidin. Orada python3 main.py
ile örnek başlatın. Gösterilen ComboBox'ta, three
numaralı öğeyi seçebileceğinizi ancak one
öğesinin konsolda bir hata verebileceğini görebilirsiniz. Bunun nedeni, maddenin birinci kez Python'dan QML'ye geçmesiydi ve ikinci kez çalışmadı.
Belki dönüştürülen QObject, QML tarafında toplanan çöpleri topladı?