Russian Qt Forum
Ноябрь 22, 2024, 23:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: TDBControlGrid  (Прочитано 4717 раз)
Rphoenix
Новичок

Offline Offline

Сообщений: 10


Просмотр профиля
« : Февраль 23, 2020, 15:37 »

Здравствуйте, переписываю прогу с Delphi 7. В нем есть класс DBControlGrid. Есть ли что-то подобное на QT? QML?
Записан
DarkHobbit
Самовар
**
Offline Offline

Сообщений: 197


Просмотр профиля
« Ответ #1 : Март 06, 2020, 09:03 »

Есть ли что-то подобное на QT?

Ну во-первых, то, что у тебя на картинке - это больше похоже не на Grid, а на List (явно выделенных столбцов нет).

Во-вторых. За QML не скажу, скажу за виджеты. В ячейку и QTableWidget, и QListWidget, ты можешь вставить ЛЮБОЙ виджет (см. метод setItemWidget), в том числе составной. То есть в принципе задача решаема.

Другое дело, что с БД в Qt обычно используют не QTableWidget/QListWidget, а QListView/QTableView и присоединяют к нему QSqlQueryModel. В этом случае список заполняется данными автоматически. В случае с QTableWidget/QListWidget тебе придётся велосипедить и вваливать в виджет данные программно. Работать будет, причём с точки зрения пользователя - примерно так же, как и на Delphi. Но для программста - много лишнего кода.

Можно ли синтезировать эти два подхода - я не знаю (хотя местные специалисты по MVC, возможно, подскажут).

И я надеюсь ты понимаешь, что такие решения стоит применять, когда число отображаемых записей, скажем так, не слишком большое?
Записан

Мои проекты на Qt: DoubleContact, LInvert
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Март 06, 2020, 11:35 »

Вставлять в ячейку виджет хорошо для чего-то типа "раскладушки меню", т.е. когда число отображаемых невелико или вообще фиксировано. Здесь я бы делал так

- создал один невидимый виджет со всей "начинкой", возможно в дызайнере

- рисовать делегатом - сначала невидимый виджет заполняется данными, потом вызываем render() и получившийся имедж шлепаем в строку таблицы

С редактированим правда тоже заботы
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 22.