Название: Методика запоминания предыдущего значения в QML Отправлено: xintrea от Январь 25, 2018, 14:14 По причине отсутствия ответов вот в этой теме:
http://www.prog.org.ru/topic_31875_0.html ...хочу разобраться в более общем вопросе. Вопрос звучит так: Цитировать Каким образом в языке QML можно организовать запоминание предыдущего значения свойства? То есть, задача состоит в том, чтобы перед любым изменением свойства запомнить его значение в другое свойство. Проблема в том, что существующий механизм сигналов onИмяСвойстваChanged() испускает сигнал об изменении свойства уже после его изменения. И в этом обработчике невозможно получить предыдущее значение свойства чтобы его запомнить. Кто что думает? Желательны примеры кода. Название: Re: Методика запоминания предыдущего значения в QML Отправлено: kuzulis от Январь 25, 2018, 14:32 Создаешь еще одну переменную и запоминаешь туда значение.. А в чем проблема то?
Название: Re: Методика запоминания предыдущего значения в QML Отправлено: xintrea от Январь 25, 2018, 15:12 Смотри. Код, который находится "выше", задает значение путем установки свойства:
Код: RibbonImage { Он ничего не знает (и не должен знать) про предыдущее значение. Значит, запоминаться предыдущее значение targetDigit должно в самом типе (в нашем случае в RibbonImage). Отследить изменение свойства targetDigit мы можем с помощью обработчика onTargetDigitChanged(). Но внутри него невозможно сохранить предыдущее значение targetDigit в какое-нибудь еще одно свойство previousDigits. А невозможно потому, что это targetDigit в момент вызова обработчика уже новое. И не из чего получить предыдущее значение, чтобы его запомнить в другом свойстве. Название: Re: Методика запоминания предыдущего значения в QML Отправлено: kibsoft от Январь 25, 2018, 23:22 Тогда не свойство напрямую менять, а сделать метод-сеттер для свойства и там уже запоминать предыдущее значение.
Название: Re: Методика запоминания предыдущего значения в QML Отправлено: xintrea от Январь 26, 2018, 14:02 Тогда не свойство напрямую менять, а сделать метод-сеттер для свойства и там уже запоминать предыдущее значение. Да с сеттером (а не с обработчиком) можно. Но тогда надо всю структуру кода менять, который изначально расчитывался на биндинги. На самом деле, есть возможность даже при биндинге правильно устанавливать предыдущее значение. Обсуждение вот тут: https://www.linux.org.ru/forum/development/13981618 |