Название: CtableMyTreeDelegate::paint при изменении шрифта текст выползает за границу Отправлено: Маус от Январь 12, 2013, 12:22 В делегате меняю шрифт, при изменении размера текст "выползает" вправо за границы колонки QTreeView. Даже если в соседней колонке есть информация, то она просто затирается. Но если выделить строку, то в текущей (выделенной строке) обрезается правильно. Qt 4.7
void CtableMyTreeDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { QStyleOptionViewItem myOption = option; myOption.font = QFont(sMyFont,nFontSize,50,false); drawDisplay(painter, myOption, myOption.rect, text); drawFocus(painter, myOption, myOption.rect); } Вариант в ModelView не подходит, т.к. он не обрабатвает элементы с своими делегатами (а так конечно работает): QVariant CtableMyTreeModel::data(const QModelIndex &index, int role) const { case Qt::FontRole: return QFont(sMyFont,nFontSize,50,false); } Название: Re: CtableMyTreeDelegate::paint при изменении шрифта текст выползает за границу Отправлено: Авварон от Январь 12, 2013, 13:58 Код: painter.save(); Должно помочь. По идее клипать должен тривью, но я не помню в нем такого кода. Название: Re: CtableMyTreeDelegate::paint при изменении шрифта текст выползает за границу Отправлено: GreatSnake от Январь 12, 2013, 14:36 По идее клипать должен тривью, но я не помню в нем такого кода. Неа, клипает QStyle::drawControl().Название: Re: CtableMyTreeDelegate::paint при изменении шрифта текст выползает за границу Отправлено: Авварон от Январь 12, 2013, 14:52 А если делегат, внезапно, не StyledItem?
Название: Re: CtableMyTreeDelegate::paint при изменении шрифта текст выползает за границу Отправлено: GreatSnake от Январь 12, 2013, 15:04 А если делегат, внезапно, не StyledItem? Ну и что?StyledItem в отличии от простого Item всего лишь поддерживает CSS. Отрисовка обоих всё равно делается через QStyle::drawControl(). Название: Re: CtableMyTreeDelegate::paint при изменении шрифта текст выползает за границу Отправлено: Маус от Январь 12, 2013, 15:21 Авварон, спасибо! Помог первый ответ! Проблема РЕШЕНА!
painter.save(); painter.setClipRect(opt.rect); ...paint... painter.restore(); господа, не могли бы зайти еще в http://www.prog.org.ru/topic_23957_0.html есть серьезная проблема с утечкой памяти |