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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: как определить Text Rect при наведении мышкой на QListWidget  (Прочитано 5256 раз)
guest
Гость
« : Август 21, 2006, 18:15 »

реализовал свой класс на основе QListWidgetItem, в котором переопределена функция paint в QItemDelegate. Теперь хочется, чтобы менялся текст при наведении на него мышкой. Не на итем, а только на текст.  Координаты мышки я могу узнать из mouseMoveEvent, а вот прямоугольник с текстом не могу найти способ узнать. Кто-нибудь знает решение?

Qt 4.1.1
Записан
Daemon
Гость
« Ответ #1 : Август 21, 2006, 19:42 »

guest а может есть смысл это реализовать через написание собственного стиля?
Записан
guest
Гость
« Ответ #2 : Август 22, 2006, 05:34 »

а чем мне может это помочь при определении координат текста?
Записан
bigirbis
Гость
« Ответ #3 : Август 22, 2006, 08:33 »

такие вещи надо смотреть выше:
Код:
QRect visualItemRect ( const QListWidgetItem * item ) const
Записан
noosooth
Гость
« Ответ #4 : Август 22, 2006, 11:40 »

Цитата: "bigirbis"
такие вещи надо смотреть выше:
Код:
QRect visualItemRect ( const QListWidgetItem * item ) const


Вот только guest, насколько я понял, про текст спрашивает, а не про весь Item.
Записан
guest
Гость
« Ответ #5 : Август 22, 2006, 13:46 »

да. координаты всего итема узнать не проблема. Важно знать именно текст.
Записан
bigirbis
Гость
« Ответ #6 : Август 22, 2006, 14:12 »

В этом случае посмотри вдобавок QFontMetrics::boundingRect()
Записан
guest
Гость
« Ответ #7 : Август 22, 2006, 14:32 »

QFontMetrics::boundingRect() возвращает координаты текста относительно нуля.
В общем-то проблема уже решена через ItemDelegate функцию paint. Но немного нехорошо. Пришлось запользовать Qt::UserRole для хранения координат текста, чтобы потом их знать при обработке движений мышки.
Всем большое спасибо!
Записан
bigirbis
Гость
« Ответ #8 : Август 22, 2006, 16:09 »

У меня с английским фигово - я понял Assistant так:
Код:
fontMetrics.boundingRect(widget->visualItemRect(item), item->data(Qt::TextAlignmentRole).toInt(), string)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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