Вытащить индекс из модели для мапера |
Здравствуйте, гость ( Вход | Регистрация )
Вытащить индекс из модели для мапера |
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 |
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 !!!
|
|
|
Текстовая версия | Сейчас: 28.11.2024, 5:25 |