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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTableView/QAbstractItemModel - Отрисовка иконок(объектов) в Cell  (Прочитано 5574 раз)
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]   Вверх
  Печать  
 
Перейти в:  


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