Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: kkk777kkk от Сентябрь 10, 2009, 11:35



Название: Как узнать влазит ли текст в ячейку QTableView
Отправлено: kkk777kkk от Сентябрь 10, 2009, 11:35
Есть таблица на vableview, к ячейкам одного из столбцов которой, появилась необходимость добавить Qt::ToolTipRole, но не хотелось бы добавлять tooltip зря, если текст в ячейке и так виден. Как узнать, что текста больше чем может вместить в себя ячейка?  ???
зы: ячейка из трех строк и разная длина слов не дает воспользоваться суммой буков и пробелов потому как не ясно как будет перенес текст.  :P

спасибо откликнувшимся  :)


Название: Re: Как узнать влазит ли текст в ячейку QTableView
Отправлено: GreenGo от Сентябрь 10, 2009, 15:19
Есть таблица на vableview, к ячейкам одного из столбцов которой, появилась необходимость добавить Qt::ToolTipRole, но не хотелось бы добавлять tooltip зря, если текст в ячейке и так виден. Как узнать, что текста больше чем может вместить в себя ячейка?  ???
зы: ячейка из трех строк и разная длина слов не дает воспользоваться суммой буков и пробелов потому как не ясно как будет перенес текст.  :P

спасибо откликнувшимся  :)
есть такой класс QFontMetrics, у которого есть ф-ция возвращающая длину определенного текста, с определенным шрифтом в пикселях.
В ф-ции отрисовки QTableView, сравнивай длину ячейки с длинной текста и если не вмещается, указывай tooltip.


Название: Re: Как узнать влазит ли текст в ячейку QTableView
Отправлено: kkk777kkk от Сентябрь 10, 2009, 22:37
пасиб за решение интересное, правда я вот, после того как написал пост, сел и решил полезть в исходники tableview  и там нашел метод resizeColumnToContents(int) а в нем все было очень просто: ширина колонки - это ширина хедера этой колонки, а sizeHintForColumn дает ширину максимальной ячейки, при этом есть наследованый метод sizeHintForIndex, который и дал мне искомую ширину текста!


Название: Re: Как узнать влазит ли текст в ячейку QTableView
Отправлено: Evgeniya от Декабрь 18, 2009, 16:25
kkk777kkk, а не подскажите как вы реализовали эту проверку???
Просто я делаю так: Добавила в модель обработку роли Qt::ToolTipRole и теперь подсказка выскакивает под каждой ячейкой...и как же внутри модели можно теперь проверить,поместится ли текст в ячейку.Ведь методы которые Вы написали относятся уже не к модели,а к представлению..
Подскажите пожалуйста,оччень надо!!!!!


Название: Re: Как узнать влазит ли текст в ячейку QTableView
Отправлено: lit-uriy от Декабрь 18, 2009, 17:38
А в модели это и незачем проверять (она не зависит от представления).
Да и подсказку выводит не модель, а представление, в нём и надо решать показывать её или нет


Название: Re: Как узнать влазит ли текст в ячейку QTableView
Отправлено: Evgeniya от Декабрь 18, 2009, 17:44
Вот и я думаю,что это в представлении нужно проверять...только как при этом выводить toolTip наведенной ячейки..чего-то я не найду такого метода в представлении


Название: Re: Как узнать влазит ли текст в ячейку QTableView
Отправлено: Kolobok от Декабрь 19, 2009, 00:40
View сама почти ничего не рисует. Это все в делегате

Код:
QAbstractItemDelegate::helpEvent