有没有办法强制QML中的绑定被更新?我使用c++作为参数将组件的状态绑定到一个ComboBox.currentText函数。
state: cpp.isInSet(combobox.currentText) ? "a" : "b";您可以猜到,如果给定的文本位于一个c++中,那么QSet函数只返回true。现在,当currentText发生变化时,这显然可以很好地工作,但同时,我从集合中添加或删除字符串。当然,当这种情况发生时,我可以发出信号,但是我如何告诉QML组件更新它的绑定呢?
作为一个又快又脏的黑客,我刚刚做了:
property bool hack: true;
Connections { target: cpp; onSetChanged: {!hack; !hack;}
state: hack && cpp.isInSet(combobox.currentText) ? "a" : "b";但肯定有更好的方法让我在医生里找不到。
发布于 2016-02-05 12:59:07
如果cpp对象具有"setChanged()“信号,则可以这样做:
function checkState() {
state = cpp.isInSet(combobox.currentText) ? "a" : "b"
}
Component.onCompleted: {
cpp.setChanged.connect(checkState)
combobox.onCurrentTextChanged.connect(checkState)
}发布于 2018-07-31 14:37:18
尝尝这个,
在cpp中添加一个属性;
Q_PROPERTY(int generation READ generation NOTIFY generationChanged);这只是个整数。无论何时,当您想要从C++开始更改时,请更改这个“代”号;
++_generation;
emit generationChanged();然后在QML中,依赖于gen;
(例如)
Item
{
...
property int gen: cpp.generation;
...
state: gen, (cpp.isInSet(combobox.currentText) ? "a" : "b");
}使用javascript逗号操作符。
https://stackoverflow.com/questions/35213818
复制相似问题