При изучении QML я наткнулся на проблему, что у меня есть свойства, которые зависят друг от друга.Двунаправленное связывание взаимно зависимых свойств в QML
E.g. пользователь может установить значение с помощью ползунка или ввести его с текстовым вводом.
При перемещении ползунка текст в текстовой строке должен быть обновлен, когда при вводе значения в текстовой строке необходимо скорректировать положение ползунка.
Теперь у меня есть два свойства: x-значение ползунка и текст в текстовой строке. Мне нужно преобразовать их в один формат (например: проценты) и обновить их наоборот. Настройка двух привязок приведет к циклу привязки, что, вероятно, не очень хорошо.
Я думаю, это очень распространенная проблема, поэтому я уверен, что для ее решения существует «золотой стандарт». Однако я не могу найти подходящее решение.
Единственный способ, который приходит мне на ум, - не использовать привязки вообще, а обрабатывать сигналы, чтобы одно из значений изменилось вручную (если я не могу перезаписать установщик в C++).
Это все, что вы можете сделать?
Добрый день!
-m-
EDIT: Теперь я попробовал его с условным привязкой значения ползунка к процентному значению.
Объект handle
является маркером на слайдере, handleArea
прилагается к нему MouseArea, что позволяет перетаскивать.
Binding {
target: root
property: 'percent'
value: handle.x/handleBar.width
when: handleArea.drag.active
}
Binding {
target: handle
property: 'x'
value: root.percent * handleBar.width
when: !handleArea.drag.active
}
Это работает. Но это хороший стиль?