Название: Как сделать редактирование записи таблицы в окне диалога? Голову сломал :( Отправлено: BaSergey от Январь 29, 2014, 11:08 Здравствуйте!
Видимо, я не понимаю чего-то принципиального, объясните, пожалуйста. Есть QSqlTableModel + QTableView, мне надо отредактировать текущую запись в QDialog-е. Пробовал вариант, когда в QDialog передается QRecord, потом значения полей записи вручную разбрасываются в виджеты, затем так же вручную обратно и запись возвращается в модель. Это тупо работает, но если в диалоге используется QComboBox, которому передаётся отдельная модель для строк списка (setModel), я не знаю как получить значение ключа выбранной строчки (не индекс строки, а связанный с ним ключ), чтобы вернуть его в запись. Как? Пробую через QDataWidgetMapper. Где взять модель для него? Передать ссылку на ту же модель, что и для QTableView? И как тогда выйти на редактирование выбранной записи? Я не нашёл ничего похожего на "текущую запись", как в VCL или ADO.NET. Краем глаза видел пример, когда модель фильтруется по ключу, но ведь тогда в списке тоже останется одна запись? (я не пробовал) Или делать отдельную такую же модель для диалога? У меня есть некоторый опыт в Delphi и Visual Studio (и, да, я стараюсь больше писать руками, а не в дизайнере), но Qt что-то ломает мне мозг... :( Если дадите пример "вот список - щёлк - вот диалог - сохранить - вернулись в список" , я буду очень признателен. Название: Re: Как сделать редактирование записи таблицы в окне диалога? Голову сломал :( Отправлено: Hellraiser от Январь 29, 2014, 11:19 В модели комбика делаем выборку со всеми нужными нам полями
Код Ну а применить этот код можно, например, при сохранении данных по команде пользователя. Название: Re: Как сделать редактирование записи таблицы в окне диалога? Голову сломал :( Отправлено: Hellraiser от Январь 29, 2014, 11:24 Модель к комбику можно прикрутить, например, в конструкторе диалога.
Код
Название: Re: Как сделать редактирование записи таблицы в окне диалога? Голову сломал :( Отправлено: BaSergey от Январь 29, 2014, 11:36 Hellraiser, спасибо!
Но это "ручной" способ. А второй, через QDataWidgetMapper? Такое впечатление, что он в принципе есть, но толку от него мало... Название: Re: Как сделать редактирование записи таблицы в окне диалога? Голову сломал :( Отправлено: Bepec от Январь 29, 2014, 11:59 DataWidgetMapper плохо работает с комбиком. В паре моих проектов есть строчки тупо забивающие значение из комбика в запрос.
Название: Re: Как сделать редактирование записи таблицы в окне диалога? Голову сломал :( Отправлено: BaSergey от Январь 29, 2014, 12:25 Всё понятно.
Укрепился во мнении, что всякие DataSet-ы годны только для чтения данных. В остальном - запросы и процедуры наше всё. Название: Re: Как сделать редактирование записи таблицы в окне диалога? Голову сломал :( Отправлено: Old от Январь 29, 2014, 12:33 Укрепился во мнении, что всякие DataSet-ы годны только для чтения данных. Да. :)В остальном - запросы и процедуры наше всё. Для остального еще можно попробовать разные ORM'ки, в том числе с использованием Qt. А можно все делать руками. |