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()信號觸發狀態更新。但如果你的情況不那麼好,那還有其他的一些方法。 –