我正在使用PyQt5构建一个Qt Quick应用程序,以便将python应用程序与QML视图集成。我有一个数据库中的项目列表,这些项目反映在QML视图中。目前我可以点击一个按钮并更新数据库,但我还没有找到或弄清楚如何更新QML组件以在添加新设备后显示新设备。做这个的最好方式是什么?这是我的QML代码:
Page {
height:300
width:300
ListView {
id:deviceList
width: parent.width
height:300
model: list_model
delegate: Item {}
Component.onCompleted: {
var l = myClass.items()
for(var counter in l){
list_model.append(l[counter])
}
}
ListModel {
id:list_model
}
Button{
text:'my button'
onClicked: { myClass.add_item() }
}
}
和我的Python代码:
class myClass:
@pyqtSlot()
def update(self):
db.add_item('new item')
@pyqtSlot(result=list)
def items(self):
return db.get_items()
app = QApplication(sys.argv)
self.engine = QQmlApplicationEngine()
test = myClass()
self.engine.rootContext().setContextProperty("myClass", myClass)
main_qml = 'main.qml'
self.engine.load(QUrl(main_qml))
self.engine.quit.connect(app.quit)
sys.exit(app.exec_())