crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в вопрос по QDataWidgetMapper
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Анна Дата 5.6.2013, 14:52
  Я поглядела на функцию addMapping().
Там, насколько я поняла после беглого взгляда, маппер пользуется eventFilter() от делегата QItemDelegat. может, стоит делегата перегрузить, а не спинБокс..

Гость_Гость_asket_*_*,
Цитата(Гость_Гость_asket_*_* @ 31.5.2013, 9:25) *
создал свою модель-наследника QAbstractTableModel

Цитата(asket @ 5.6.2013, 10:47) *
Теперь очередная проблема как заставить QDataWidgetMapper обновлять содержимое виджетов по изменению содержимого модели?


Ну, наверное, ваша модель должна где-то посылать сигнал dataChanged ( const QModelIndex & topLeft, const QModelIndex & bottomRight ), и , скорей всего, это "где-то" функция setData() у модели.

Я бы начала исследования этого вопроса с исходника QDataWidgetMapper, конкретно - функции setModel().
...
и там, действительно происходит connect(model, SIGNAL(dataChanged ...),...);
asket Дата 5.6.2013, 9:47
  Я немного по другому сделал, с использованием QSignalMapper, соединил сигналы textChanged() и valueChanged() со всех виджетов с одним слотом, который вызывает функцию обновления модели submit, но почему то заработало только тогда, когда я в функции добавления виджета addMapping указал свойства "value" и "text", хотя во всех примерах свойства не используются и прекрасно работают, ну и ладно. Теперь очередная проблема как заставить QDataWidgetMapper обновлять содержимое виджетов по изменению содержимого модели?
Анна Дата 3.6.2013, 12:35
  Подсуньте вместо спинбокса какого-нибудь посредника, который будет по каждому сигналу от спинбокса слать мапперу editFinished(), ну и значение из спинбокса возвращать.
В конце концов, вы хотите добиться несколько нестандартного (по замыслу авторов) поведения от пары спинбокс-маппер, так реализуйте его своими силами с помощью перегрузки спинбокса, например.

Это чисто общие соображения. Просто именно с изменением поведения спинбокса уже приходилось иметь дело.
asket Дата 3.6.2013, 8:28
  Litkevich Yuriy, предположим на форме висит spinBox, когда мышкой прокручиваете параметры-счетчик, в соответствующем поле модели значение не меняется, а поменяется значение тогла когда spinBox или потеряет фокус (когда tab клавищей перейдете на другой виджет) или нажмете enter. Мне надо, чтобы соответствующее поле в модели менялось при прокручивании spinBox, крутите мышкой - синхронно меняется значение поля в модели, а не в случае потери фокуса или нажатия enter. Такое впечатление что QDataWidgetMapper ждет сигнала editFinished() а не textChanged или valueChanged(int) чтобы изменить параметры полей в модели.

  QSpinBox *spinBox = new spinBox(this);
  ....

  model = new TableModel(this);
  widgetMapper = new QDataWidgetMapper(this);
  widgetMapper->setModel(model);
  widgetMapper->addMapping(lineEdit_1, 0);
  widgetMapper->addMapping(lineEdit_2, 1);
  widgetMapper->addMapping(lineEdit_3, 2);
  widgetMapper->addMapping(spinBox, 3);
  widgetMapper->toFirst();




Алексей1153, reset() вызывается в самом модели и является protected-функцией, модель работает, синхронизировал с TreeView проблем нет.
Litkevich Yuriy Дата 31.5.2013, 19:09
  так и не понял как должно работать, а как - нет
Алексей1153 Дата 31.5.2013, 17:21
  а вызов метода модели reset() не помогает ?
Гость_asket_* Дата 31.5.2013, 8:25
  вопрос по QDataWidgetMapper, я создал свою модель-наследника QAbstractTableModel , привязал к полям данной модели GUI-виджеты (lineEdit, spinBox и прочее ) с помощью QDataWidgetMapper, но значения полей меняются в случае потери фокуса виджета, как сделать чтобы значения полей менялись при изменении значении параметров виджета? Например, spinBox прокручивается, а значение поля модели не меняется, оно изменится в случае, если spinBox потеряет фокус или нажата Enter, что нежелательно. Спасибо.
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 10.7.2025, 11:16