Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Karl-Philipp от Ноябрь 20, 2007, 13:13



Название: Ориентация текста в заголовке QHeaderView
Отправлено: Karl-Philipp от Ноябрь 20, 2007, 13:13
Подскажите, пожалуйста, как изменить для таблицы ориентацию надписи в header row с горизонтальной на вертикальную?


Название: Re: Ориентация текста в заголовке QHeaderView
Отправлено: LestorN от Ноябрь 21, 2007, 08:22
Заголовки отрисовываются одним куском, посему делегаты для этого неприменимы, в своё время я откопал только один выход писать свой стиль...


Название: Re: Ориентация текста в заголовке QHeaderView
Отправлено: vaprele07 от Ноябрь 21, 2007, 11:56
там есть паинтсектион, рисуй как хочешь, пс с вложенными заголовками также.


Название: Re: Ориентация текста в заголовке QHeaderView
Отправлено: Barmaglodd от Ноябрь 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);
}
}


Название: Re: Ориентация текста в заголовке QHeaderView
Отправлено: Karl-Philipp от Ноябрь 28, 2007, 15:27
Barmaglodd, большое спасибо!!! :)