Russian Qt Forum

Qt => Общие вопросы => Тема начата: guest от Август 21, 2006, 18:15



Название: как определить Text Rect при наведении мышкой на QListWidget
Отправлено: guest от Август 21, 2006, 18:15
реализовал свой класс на основе QListWidgetItem, в котором переопределена функция paint в QItemDelegate. Теперь хочется, чтобы менялся текст при наведении на него мышкой. Не на итем, а только на текст.  Координаты мышки я могу узнать из mouseMoveEvent, а вот прямоугольник с текстом не могу найти способ узнать. Кто-нибудь знает решение?

Qt 4.1.1


Название: как определить Text Rect при наведении мышкой на QListWidget
Отправлено: Daemon от Август 21, 2006, 19:42
guest а может есть смысл это реализовать через написание собственного стиля?


Название: как определить Text Rect при наведении мышкой на QListWidget
Отправлено: guest от Август 22, 2006, 05:34
а чем мне может это помочь при определении координат текста?


Название: как определить Text Rect при наведении мышкой на QListWidget
Отправлено: bigirbis от Август 22, 2006, 08:33
такие вещи надо смотреть выше:
Код:
QRect visualItemRect ( const QListWidgetItem * item ) const


Название: как определить Text Rect при наведении мышкой на QListWidget
Отправлено: noosooth от Август 22, 2006, 11:40
Цитата: "bigirbis"
такие вещи надо смотреть выше:
Код:
QRect visualItemRect ( const QListWidgetItem * item ) const


Вот только guest, насколько я понял, про текст спрашивает, а не про весь Item.


Название: как определить Text Rect при наведении мышкой на QListWidget
Отправлено: guest от Август 22, 2006, 13:46
да. координаты всего итема узнать не проблема. Важно знать именно текст.


Название: как определить Text Rect при наведении мышкой на QListWidget
Отправлено: bigirbis от Август 22, 2006, 14:12
В этом случае посмотри вдобавок QFontMetrics::boundingRect()


Название: как определить Text Rect при наведении мышкой на QListWidget
Отправлено: guest от Август 22, 2006, 14:32
QFontMetrics::boundingRect() возвращает координаты текста относительно нуля.
В общем-то проблема уже решена через ItemDelegate функцию paint. Но немного нехорошо. Пришлось запользовать Qt::UserRole для хранения координат текста, чтобы потом их знать при обработке движений мышки.
Всем большое спасибо!


Название: как определить Text Rect при наведении мышкой на QListWidget
Отправлено: bigirbis от Август 22, 2006, 16:09
У меня с английским фигово - я понял Assistant так:
Код:
fontMetrics.boundingRect(widget->visualItemRect(item), item->data(Qt::TextAlignmentRole).toInt(), string)