Название: TDBControlGrid Отправлено: Rphoenix от Февраль 23, 2020, 15:37 Здравствуйте, переписываю прогу с Delphi 7. В нем есть класс DBControlGrid. Есть ли что-то подобное на QT? QML?
(https://www.mwasoftware.co.uk/images/articles/TDBControlGrid.png) Название: Re: TDBControlGrid Отправлено: DarkHobbit от Март 06, 2020, 09:03 Есть ли что-то подобное на QT? Ну во-первых, то, что у тебя на картинке - это больше похоже не на Grid, а на List (явно выделенных столбцов нет). Во-вторых. За QML не скажу, скажу за виджеты. В ячейку и QTableWidget, и QListWidget, ты можешь вставить ЛЮБОЙ виджет (см. метод setItemWidget), в том числе составной. То есть в принципе задача решаема. Другое дело, что с БД в Qt обычно используют не QTableWidget/QListWidget, а QListView/QTableView и присоединяют к нему QSqlQueryModel. В этом случае список заполняется данными автоматически. В случае с QTableWidget/QListWidget тебе придётся велосипедить и вваливать в виджет данные программно. Работать будет, причём с точки зрения пользователя - примерно так же, как и на Delphi. Но для программста - много лишнего кода. Можно ли синтезировать эти два подхода - я не знаю (хотя местные специалисты по MVC, возможно, подскажут). И я надеюсь ты понимаешь, что такие решения стоит применять, когда число отображаемых записей, скажем так, не слишком большое? Название: Re: TDBControlGrid Отправлено: Igors от Март 06, 2020, 11:35 Вставлять в ячейку виджет хорошо для чего-то типа "раскладушки меню", т.е. когда число отображаемых невелико или вообще фиксировано. Здесь я бы делал так
- создал один невидимый виджет со всей "начинкой", возможно в дызайнере - рисовать делегатом - сначала невидимый виджет заполняется данными, потом вызываем render() и получившийся имедж шлепаем в строку таблицы С редактированим правда тоже заботы |