Russian Qt Forum
Июня 25, 2025, 01:56 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTableView/QAbstractItemModel - Отрисовка иконок(объектов) в Cell  (Прочитано 5742 раз)
spectre71
Гость
« : Мая 24, 2009, 11:55 »

Помогите реализовать!
Смотрите картинку с таблицей (сделано на C++ Builder)
В колонке "Results" могут находиться несколько иконок (от 1 до 3 в данном случае)

Размер иконки задан некоторым Rect в котором рисуется картинка.

Задачи:
1) Редактирование клетки с иконками не предпологается
2) Отрисовка. Как и где рисовать иконки в CELL определяю я.
3) При наведении на конкретную иконку(не клетку) меняется курсор на заданный.
    Размер иконки задан некоторым Rect. Вне этого Rect курсор стандартный.
4) При наведении на конкретную иконку может показываться ToolTip определенный для нее.
5) При нажатии мышью(Mouse Press)на иконке посылается заданный сигнал.
    Нажатие одиночное. Данная клетка может быть не текущая и не выделенная.
    Но сигнал должен посылаться сразу после первого нажатия для конкретной иконки (определенной ее Rect)
« Последнее редактирование: Мая 24, 2009, 12:05 от spectre71 » Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #1 : Мая 28, 2009, 11:35 »

По поводу картинки в ячейки таблицы  - у меня похожая задачка и как я понял нужно перегружать класс QAbstractItemDelegate
и реализовывывать собсвенную отрисовку. Я еще пока не приступал к этому. Грустный
Записан
spectre71
Гость
« Ответ #2 : Мая 28, 2009, 11:47 »

Да, перегружать QAbstractItemDelegate надо - мне только QAbstractItemDelegate::paint.
Это путкты 1 и 2

Но это не поможет для пунктов 3, 4, 5
Записан
Rcus
Гость
« Ответ #3 : Мая 28, 2009, 12:17 »

В голове одни велосипеды крутятся:
QAbstractItemView::indexWidget()
или
QAbstractItemView::openPersistentEditor()
или
QWidget::mouseTracking() + QAbstractItemView::indexAt() + QAbstractItemView::itemDelegate()
и еще некоторые неоформившиеся варианты.
Записан
Barmaglodd
Гость
« Ответ #4 : Мая 28, 2009, 12:43 »

Можно пример stardelegate посмотреть, но там работает только когда ячейка в режиме редактирования.
Записан
spectre71
Гость
« Ответ #5 : Мая 28, 2009, 13:18 »

Можно пример stardelegate посмотреть, но там работает только когда ячейка в режиме редактирования.
Внимательней читайте тему. Про редактирование речь не идет
Записан
spectre71
Гость
« Ответ #6 : Мая 28, 2009, 13:50 »

QAbstractItemView::indexWidget()
QAbstractItemView::openPersistentEditor()

Слишком нерационально, у меня могут > 100000 rows

QWidget::mouseTracking() + QAbstractItemView::indexAt() + QAbstractItemView::itemDelegate()
Да я так и начал делать 
QAbstractItemView::itemDelegate() - на отрисовку
QWidget::mouseTracking() + QAbstractItemView::indexAt() - на изменение состояния курсора итд.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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