QML:如何将项属性重置为defaut

时间:2016-06-09 09:54:14

标签: qml

有没有办法重置项目的属性?

例如:

Item{
 id: test
 x: 10; y: 10
}

然后我将x,y设置为(100,100)。 无需更改x,y(10,10)。 像test.reset()这样的任何函数。

我的问题是: 我拖动一个项目,如果它没有落入正确的区域,我希望该项目自动返回。

2 个答案:

答案 0 :(得分:3)

通常,将属性设置为undefined会导致重置该属性。一个例子是Item的{​​{3}}分组属性:

  

要清除锚值,请将其设置为undefined。

Qt的anchors具有可重置属性的概念:

  

RESET功能是可选的。它用于将属性设置回其特定于上下文的默认值。例如,QWidget :: cursor有典型的READ和WRITE函数,QWidget :: cursor()和QWidget :: setCursor(),它还有一个RESET函数,QWidget :: unsetCursor(),因为没有调用QWidget :: setCursor()可以表示重置为特定于上下文的游标。 RESET函数必须返回void并且不带参数。

但是,对于您的具体问题,您可能需要查看property system。这演示了如何将项目返回到原始位置。

答案 1 :(得分:0)

public final class OperatorMap<T, R> implements Operator<R, T> {

    private final Func1<? super T, ? extends R> transformer;

    public OperatorMap(Func1<? super T, ? extends R> transformer) {
        this.transformer = transformer;
    }

    @Override
    public Subscriber<? super T> call(final Subscriber<? super R> o) {
        return new Subscriber<T>(o) {

            @Override
            public void onCompleted() {
                o.onCompleted();
            }

            @Override
            public void onError(Throwable e) {
                o.onError(e);
            }

            @Override
            public void onNext(T t) {
                try {
                    o.onNext(transformer.call(t));
                } catch (Throwable e) {
                    Exceptions.throwOrReport(e, this, t);
                }
            }

        };
    }

}

还有什么?