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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Виджет с самодельной таблицей  (Прочитано 5200 раз)
alex12
Гость
« : Январь 16, 2009, 09:42 »

Добрый день!

Необходимо сделать виджет с большой таблицей. Содержимое таблицы буду отрисовывать сам ибо оно очень специфично. Решение на QTableView не проходит. Нужен только горизонтальный заголовок, что упрощает дело.

Таблица большая. Нужен скроллинг. Судя по всему, такой виджет правильно будет делать, наследуясь от QAbstractScrollArea. Так это сделано в QTableView.

Вопрос: как грамотно организовать взаимодействие QAbstractScrollArea, QHeaderView, скроллинга и области отрисовки таблицы? Никто не сталкивался с такой задачей?
Записан
Rcus
Гость
« Ответ #1 : Январь 16, 2009, 09:53 »

У меня такое подозрения что тролли сталкивались с этой задачей Улыбающийся Хотелось бы узнать что из себя представляет содержимое таблицы, что не позволяет использовать роли, стили или наследование от QTableView для решения проблема.
Записан
alex12
Гость
« Ответ #2 : Январь 16, 2009, 10:31 »

У меня такое подозрения что тролли сталкивались с этой задачей Улыбающийся

Смотрел исходники Qt. Много думал... Там сильные навороты, связанные с QAbstractModelView. Точного механизма работы скроллеров и хедеров я так и не понял.

Почему я не могу использовать QTableView? Мне видиться слишком сложным переопределять кучу разных механизмов, чтобы добиться относительно простого частного случая. В частности нужны:

  - разделительные линии разной толщины для разных столбцов,
  - нестандартное оформление выделенной области,
  - вывод дополнительных графических знаков в ячейку,
  - вывод текста разными цветами в одну ячейку,
  - сложное объединение ячеек,
  - нестандартный виджет ввода данных.

Как минимум здесь нужно переопределять:
  - QAbstractTableModel - собственно данные,
  - возиться с объединением ячеек,
  - стили для нестандартного выделения,
  - QAbstractItemDelegate для отображения,
  - Виджет редактора для ввода данных,
  - наверное еще что-то...

На таком пути я запнулся на разделительных линии разной толщины для разных столбцов.

Собственно уточнение вопроса: скроллеры уже есть на QAbstractScrollArea. Осталось правильно разместить заголовок таблицы и связать изменение размеров всего виджета и QHeaderView?

Записан
Dendy
Гость
« Ответ #3 : Январь 16, 2009, 10:44 »

Вам нужен собственно отнаследоваться от QAbstractItemView. Хидеров в нём нет, так как это деталь реализации, вам прийдётся добавить свой и разместить его руками самостоятельно. Внутри всё будет рисоваться с помощью низкоуровневого QPainter. К примеру у меня сейчас наследник от QAbstractItemView, содержимое которого рисуется с помощью OpenGL.
Записан
prometey
Гость
« Ответ #4 : Март 11, 2009, 02:07 »

to alex12:

у меня стоит задача один в один, только вот проблема что я совершенно начинающий в QT Улыбающийся поэтому мне будет очень интересно узнать о ходе продвижения разработки и о возникающих трудностях.

Заранее благодарен.
Записан
limmenz
Гость
« Ответ #5 : Май 02, 2009, 05:18 »

to alex12:

у меня стоит задача один в один, только вот проблема что я совершенно начинающий в QT Улыбающийся поэтому мне будет очень интересно узнать о ходе продвижения разработки и о возникающих трудностях.

Заранее благодарен.

Присоединяюсь к просьбе  Улыбающийся
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #6 : Май 02, 2009, 11:16 »

не представляю как делать только пункты 1 и 5, причем йа нуб в qt
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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