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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Ориентация текста в заголовке QHeaderView  (Прочитано 5331 раз)
Karl-Philipp
Гость
« : Ноябрь 20, 2007, 13:13 »

Подскажите, пожалуйста, как изменить для таблицы ориентацию надписи в header row с горизонтальной на вертикальную?
« Последнее редактирование: Ноябрь 20, 2007, 18:46 от Karl-Philipp » Записан
LestorN
Гость
« Ответ #1 : Ноябрь 21, 2007, 08:22 »

Заголовки отрисовываются одним куском, посему делегаты для этого неприменимы, в своё время я откопал только один выход писать свой стиль...
Записан
vaprele07
Гость
« Ответ #2 : Ноябрь 21, 2007, 11:56 »

там есть паинтсектион, рисуй как хочешь, пс с вложенными заголовками также.
Записан
Barmaglodd
Гость
« Ответ #3 : Ноябрь 22, 2007, 11:34 »

Я наследовался от QHeaderView и paintSection переопределял.

Код:
void RotatedHeader::paintSection( QPainter * painter, const QRect & rect, int logicalIndex ) const
{
if(_model)
{
QVariant data = _model->headerData(logicalIndex, orientation(), Qt::UserRole);
if (data.isValid())
{
QString text=data.toString();

QPixmap original_button(rect.width(), rect.height());
QPainter original_button_painter(&original_button);
QHeaderView::paintSection(&original_button_painter, QRect(0, 0, rect.width(), rect.height()), logicalIndex);

QPixmap pix(rect.width(), rect.height());
QPainter p(&pix);
p.drawPixmap(0, 0, original_button);

QRect new_r(0, 0,  rect.height(), rect.width());
QMatrix m;
m.translate(0, rect.height());
m.rotate(-90);
p.setWorldMatrix(m, true);
p.drawText(new_r, Qt::AlignCenter, text);

painter->drawPixmap(rect, pix);
}
}
Записан
Karl-Philipp
Гость
« Ответ #4 : Ноябрь 28, 2007, 15:27 »

Barmaglodd, большое спасибо!!! Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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