crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Вытащить индекс из модели для мапера
JohnZ
  опции профиля:
сообщение 3.7.2015, 13:28
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 139
Регистрация: 19.7.2014
Пользователь №: 4190

Спасибо сказали: 10 раз(а)




Репутация:   0  


Есть модель QSqlTableModel, указатель на неё передаётся в диалог.
В диалоге создаём мапер, которому (как оказалось) кроме модели
нужен ещё и индекс записи (хотя он-же должен находиться в модели ? )

dataMapper = new QDataWidgetMapper(this); // this это QDialog
dataMapper->setModel(model);
dataMapper->setSubmitPolicy(QDataWidgetMapper::ManualSubmit);

// dataMapper->setCurrentModelIndex(model->index( ??? )); <--- что тут поставить ???

dataMapper->addMapping(ui.salary, model->fieldIndex("zrp"));

И второй вопрос, - можно-ли смапировать QComboBox на int-овое поле ?
Если да, покажите код, плз ...

Заранее благодарен за помощь.

Сообщение отредактировал JohnZ - 3.7.2015, 13:29
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 3.7.2015, 18:11
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


setCurrentModelIndex задает какую строку вы сейчас отображаете на виджете.
Можете использовать setCurrentIndex()
http://doc.qt.io/qt-4.8/qdatawidgetmapper....rrentIndex-prop
или вообще toFirst()
http://doc.qt.io/qt-4.8/qdatawidgetmapper.html#toFirst

По второму вопросу, зависит от того что вы имеете под словом смапировать.
Вам нужно заполнить комбобокс правильными значениями(вручную, либо назначить ему соответствующую секцию таблицы)
Затем сделать mapping через QDataWidgetMapper к нужному полю.
ЕМНИП USER property у QComboBox как раз currentIndex, поэтому все должно срастись без проблем.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
JohnZ
  опции профиля:
сообщение 7.7.2015, 20:34
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 139
Регистрация: 19.7.2014
Пользователь №: 4190

Спасибо сказали: 10 раз(а)




Репутация:   0  


Цитата(lanz @ 3.7.2015, 18:11) *
setCurrentModelIndex задает какую строку вы сейчас отображаете на виджете.
Можете использовать setCurrentIndex()
http://doc.qt.io/qt-4.8/qdatawidgetmapper....rrentIndex-prop
или вообще toFirst()
http://doc.qt.io/qt-4.8/qdatawidgetmapper.html#toFirst

Дык это я у модели хотел спросить, какую строку она отображает, что-бы с неё взять ключ и по нему заполнить диалог...
Если toFirst(), то я в диалоге, (т.е. в форме редактирования записи) всегда буду видеть только 1-ю запись ?!
Цитата
По второму вопросу, зависит от того что вы имеете под словом смапировать.
Вам нужно заполнить комбобокс правильными значениями(вручную, либо назначить ему соответствующую секцию таблицы)
Затем сделать mapping через QDataWidgetMapper к нужному полю.
ЕМНИП USER property у QComboBox как раз currentIndex, поэтому все должно срастись без проблем.

Как раз currentIndex я и имел в видЕ, поле БД интовое, QComboBox уже заполнен "вручную".
Нужно что-бы в зависимости от значения поля в БД QComboBox сам выбирал нужную строку, по номеру, типа switch-а ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 8.7.2015, 23:29
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Цитата
Дык это я у модели хотел спросить, какую строку она отображает, что-бы с неё взять ключ и по нему заполнить диалог...

Модель не отображает никакой строки. Конкретная строка отображается именно во вью, в данном случае QWidgetMapper.
QWidgetMapper же и отвечает за заполнение подотчетного виджета.
Какая строка конкретно выделена для этого диалога можно спросить у того вью, в котором выделяются строки и потом сделать
setCurrentIndex() на нее.

Цитата
Нужно что-бы в зависимости от значения поля в БД QComboBox сам выбирал нужную строку, по номеру, типа switch-а ?

Это автоматически делает QWidgetMapper.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
JohnZ
  опции профиля:
сообщение 9.7.2015, 11:40
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 139
Регистрация: 19.7.2014
Пользователь №: 4190

Спасибо сказали: 10 раз(а)




Репутация:   0  


Получилось ! Спасибо, lanz !!!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.11.2024, 5:25