QML PyQt相应地点击和更新视图更新数据库

时间:2018-02-14 22:23:22

标签: qt pyqt qml pyqt5 qtquick2

我正在使用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_())

0 个答案:

没有答案