crossplatform.ru

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


  Ответ в Вытащить индекс из модели для мапера
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

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


Последние 10 сообщений [ в обратном порядке ]
JohnZ Дата 9.7.2015, 11:40
  Получилось ! Спасибо, lanz !!!
lanz Дата 8.7.2015, 23:29
 
Цитата
Дык это я у модели хотел спросить, какую строку она отображает, что-бы с неё взять ключ и по нему заполнить диалог...

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

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

Это автоматически делает QWidgetMapper.
JohnZ Дата 7.7.2015, 20:34
 
Цитата(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 Дата 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

По второму вопросу, зависит от того что вы имеете под словом смапировать.
Вам нужно заполнить комбобокс правильными значениями(вручную, либо назначить ему соответствующую секцию таблицы)
Затем сделать mapping через QDataWidgetMapper к нужному полю.
ЕМНИП USER property у QComboBox как раз currentIndex, поэтому все должно срастись без проблем.
JohnZ Дата 3.7.2015, 13:28
  Есть модель 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-овое поле ?
Если да, покажите код, плз ...

Заранее благодарен за помощь.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 20.4.2021, 1:43