0
是否有任何方法可以强制更新QML中的绑定? 我使用ComboBox.currentText作为参数,将组件的状态绑定到C++函数。依赖于C++函数的QML强制绑定更新
state: cpp.isInSet(combobox.currentText) ? "a" : "b";
正如你可以猜测,C++函数只是返回true,如果给定的文本是在QSet。 现在,当currentText改变时,这显然工作正常,但同时我添加或删除集合中的字符串。 当发生这种情况,我可以发出一个信号,但我怎么能告诉QML组件更新它的绑定?
作为一个快速和肮脏的黑客我只是做:
property bool hack: true;
Connections { target: cpp; onSetChanged: {!hack; !hack;}
state: hack && cpp.isInSet(combobox.currentText) ? "a" : "b";
但显然是因为我只是太傻在文档中找到一个更好的办法。
是否可以通过生活在CPP到QML作为函数的参数设定?像'state:cpp.isInSet(cpp.mySet,combobox.currentText)? “a”:“b”;' –
你的意思是用Q_Property宏“暴露”QSet到QML?这会比我的黑客更糟糕,这就是为什么我问我是否可以强制更新QML绑定。 – ldr
对。根据情况,这是一个非常干净的解决方案。您将使用set的setXyPropertyChanged()信号触发状态更新。但如果你的情况不那么好,那还有其他的一些方法。 –