QDataWidgetMapper для отображения нескольких столбцов на несколько свойств одного пользовательского виджета - PullRequest
0 голосов
/ 08 ноября 2018

Я искал решения в течение нескольких дней по этому вопросу. Вот ситуация:

У меня есть собственный класс ползунка, который имеет две ручки для управления диапазоном значений типа double, и я создал для этого четыре свойства:

Q_PROPERTY(double minimum MEMBER mMinimum NOTIFY minimumChanged USER true)
Q_PROPERTY(double maximum MEMBER mMaximum NOTIFY maximumChanged USER true)
Q_PROPERTY(double lowerValue MEMBER mLowerValue NOTIFY lowerValueChanged USER true)
Q_PROPERTY(double upperValue MEMBER mUpperValue NOTIFY upperValueChanged USER true)

Я связываю эти свойства с QDataWidgetMapper:

settingsMapper->addMapping(ui->cutLevelSlider, settings.indexOf("lowerCutLevel"), "lowerValue");
settingsMapper->addMapping(ui->cutLevelSlider, settings.indexOf("upperCutLevel"), "upperValue");
settingsMapper->addMapping(ui->cutLevelSlider, settings.indexOf("minValue"), "minimumValue");
settingsMapper->addMapping(ui->cutLevelSlider, settings.indexOf("maxValue"), "maximumValue")
settingsMapper->toFirst();

, надеясь, что у меня может быть двухстороннее обновление между ползунком и моделью элемента settings, которая управляет единственной истинностью значений настроек. Другими словами, я пытаюсь использовать ползунок cutLevelSlider для просмотра 4 значений min, max, lower, upper, хранящихся в модели settings.

Но это не работает. Когда я перемещаю ползунок, только последнее свойство (upperValue) из ползунка обновляется до модели, все остальные не изменяются. Когда я изменяю модель с помощью другого виджета (скажем, редактирую из таблицы), статус слайдера соответственно не изменяется.

Может ли кто-нибудь помочь мне в этом? Спасибо.

...