Спозиционировать на запись в QSqlTableModel, Найти индекс записи |
Здравствуйте, гость ( Вход | Регистрация )
Спозиционировать на запись в QSqlTableModel, Найти индекс записи |
JohnZ |
29.9.2014, 18:31
Сообщение
#1
|
Участник Группа: Участник Сообщений: 139 Регистрация: 19.7.2014 Пользователь №: 4190 Спасибо сказали: 10 раз(а) Репутация: 0 |
Всем Здравствовать !
Есть такой класс на диалоге, для обслуживания динам-х форм.
Есть 2 объекта этого класса, загруженных динамически последовательно, но первый это список, т.е. таблица из БД, а второй форма редактирования выбранной записи, которая находится в указателе *DlgForm. В смысле загруженная Форма в указателе ;-) Модель у них ес-сно одна на двоих, т.к. список устанавливает модель форме через void setExtModel(QSqlTableModel *extmodel); Мапер связывает поля модели в объекте формы. (Один класс на форму и список !) mapper = new QDataWidgetMapper(this); mapper->setModel(model); ...................................................... aStr = QString("fld_%1").arg(Idd); mapper->addMapping((QLineEdit *)wo, model->fieldIndex(aStr)); mapper->toFirst(); Вызов формы из объекта списка тривиален
Трабл-ема в том, что форма всегда показывает ПЕРВУЮ запись, а не выбранную в ( QTableView *view; ) Я предполагал, что указателя на модель, для определения выбора mapper-у будет достаточно Помогите PLZ спозиционировать в форму выбранную запись ... И попутно, в void fpForm::keyPressEvent ( QKeyEvent * event ) не отлавливается почему-то клавиша пробел ?! Кто-либо сталкивался ? QT 4.5.3. Сообщение отредактировал JohnZ - 29.9.2014, 18:35 |
|
|
lanz |
29.9.2014, 18:52
Сообщение
#2
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Чтобы спозиционировать:
http://qt-project.org/doc/qt-5/qabstractit...w.html#scrollTo А чтобы поместить в виджет нужный индекс: http://qt-project.org/doc/qt-5/qdatawidget...rrentModelIndex |
|
|
JohnZ |
29.9.2014, 19:14
Сообщение
#3
|
Участник Группа: Участник Сообщений: 139 Регистрация: 19.7.2014 Пользователь №: 4190 Спасибо сказали: 10 раз(а) Репутация: 0 |
lanz, спасибо, заработало !
А по-поводу any-key (пробел) подскажет-кто ? Новые проблемы. Продолжу здесь, да-бы не плодить тем. 1. Когда находимся в форме редактирования записи, нажатие любой из кнопок диалога ( Ок || Cancel ) обновляет view. Т.е. QTableView не видит между ними различия. Как победить ? 2.
При установленной model->setEditStrategy(QSqlTableModel::OnManualSubmit); при закрытии формы в консоль вываливает "QSqlQuery::value: not positioned on a valid record" . Во-первых в диалоге выбранная запись, т.е. позиционирование есть ! (спасибо lanz) Во-вторых обновление записи я пока нигде не ставил, т.е. ещё до этого не дошёл. Откуда и почему это может вылазить ? Как победить ? 3. По реакции на "пробел" - он перехватывается загруженным QTableView и далее не выпускается. void fpForm::keyPressEvent на форме его действительно не видит. Можно-ли "упросить" QTableView отдавать клавишу пробел ? Сообщение отредактировал JohnZ - 1.10.2014, 16:37 |
|
|
Текстовая версия | Сейчас: 2.12.2024, 13:56 |