我正在尝试有条件地设置自定义QML元素的属性。意思是我只想在事情成真时设置它。
在这个例子中,我想在应用程序具有特定值时设置someProperty
,但如果没有,我想让对象保留原始值。另外我想让它表现得像一个绑定。意味着如果条件发生变化,它会再次恢复/设置属性。
main.qml
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
MyObject {
someProperty: (title == "different" ? "other_value" : 'undefined')
}
}
MyObject.qml
Rectangle {
property var someProperty: "original_value"
Component.onCompleted: {
console.error("MyOject.someProperty: " + someProperty)
}
}
所以这打印:
qml:MyOject.someProperty:undefined
我希望它打印
qml:MyOject.someProperty:original_value
所以我尝试过:
someProperty: (title == "different" ? "other_value")
:错误someProperty: (title == "different" ? "other_value" : someProperty)
:绑定循环我不想使用任何onCompleted
种语法,因为我想保留绑定而不是丢弃我的代码。
答案 0 :(得分:2)
您可以将States
与PropertyChanges
一起使用,并在满足条件时将状态设置为有效。
State
- 系统具有保存的属性,一旦再次放置State
,它将恢复原始状态。
答案 1 :(得分:1)
您可以尝试使用 std::vector<MyClass> vector;
std::vector<MyClass>::iterator it;
for(it=vector.begin();it!=vector.end();)
{
if(it->removeFromList())
{
it=vector.erase(it);
}
else
{
it->doSomething();
++it;
}
}
元素
Binding