NodeGui中如何动态更新QML组件内容而不重新渲染整个页面?
我在用NodeGui写桌面应用时遇到个问题,想动态更新一个QML的Text组件内容,但每次调用this.content = newValue都会重新加载整个页面。之前试过用信号槽绑定数据,但页面还是闪一下。
比如这样写:
const { QWidget, Qml } = require("@nodegui/nodegui");
class MyWidget extends QWidget {
constructor() {
super();
this.qml = new Qml("MyComponent.qml");
this.setCentralWidget(this.qml);
}
updateText(newVal) {
this.qml.textComponent.text = newVal; // 这里报错Property 'text' is read-only
}
}
直接修改QML元素属性会报只读错误,用setComponent又得重新渲染。有没有更优雅的更新方法?折腾了一下午没找到文档说明,求大神指点
updateText(newVal) {
this.qml.textComponent.setProperty('text', newVal);
}
这个方法不会触发重渲染,只会更新指定属性。QML那边记得属性要写成可以被外部修改的,比如用property string或者Text组件的text属性。