А можно (конструктивную) критику?
Я посмотрел текст и мне не понравилось что расчеты смешаны с UI. Здесь легко выделить ф-цию которая никак от UI не зависит.
C++ (Qt)
template <class T>
void Balance( QVector<T> & vec,
T sum,
size_t lockIndex )
{
...
}
После этого UI станет проще: не нужен никакой QMap, может и класс Controller не нужен, а обойтись контейнером указателей на слайдеры. Если понадобится более сложная балансировка, можно спокойно развивать ф-цию Balance не ковыряя UI
Спасибо за критику.
Не вижу проблемы в том, что код, дорабатывающий поведение UI завязан на UI. Едва ли это будет применяться где-то еще, кроме как в этой конкретной ситуации, поэтому нет смысла совершать лишние телодвижения для его обобщения. KISS принцип
QSlider оперирует только int, а в данной ситуации (принцип сообщающихся сосудов) этого мало. Изменение на 1 должно распределиться на N слайдеров и это реальное значение для каждого слайдера нужно где-то хранить.
Вообще говоря, сумма значений слайдеров, полученная через pSlider.Value(), будет лишь приблизительно равна необходимой величине, а реальные значения знает лишь контроллер. Либо нужно ставить задачу иначе и при балансировке отдавать какому-то слайдеру предпочтение (что ИМХО еще запутаннее).