2015-10-08 2 views
0

У меня есть диапазон ячеек (1 столбец, 5 строк), где я хотел бы отображать текст под углом 90 градусов. Я знаю, что мне нужно изменить размер геометрии, но пока я не могу даже получить текст. В среднем ряду, я делаю это в моем наследнике QItemDelegate :: краски()QItemDelegate: повернуть текст 90 градусов

QString data = "String"; 
painter->rotate(90); 
painter->drawText(opt.rect, Qt::AlignLeft, data); 

В принципе я ничего не получаю напечатанное в этом случае. Несколько других вопросов привели меня ко всему этому. Я что-то упускаю?

+0

это должно помочь: http://stackoverflow.com/a/22634541/1387438 –

+0

Это выглядит, как будто это для QHeaderView. Мне нужно повернуть текст в реальном представлении - в ячейках. Я предположил, что могу сделать это в переопределенной краске(). –

ответ

0

Образец такой же, как и в ссылке, опубликованной в комментарии. Это должно выглядеть примерно так или иначе. Я мог испортить какой-то знак или сделать опечатку.

#include "customitemdelegate.h" 
#include <QPainter> 

CustomItemDelegate::CustomItemDelegate(QObject *parent) 
    : QItemDelegate(parent) 
{ 
} 

void CustomItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const 
{ 
    QStyleOptionViewItem newOption(option); 
    QTransform transform(QTransform::fromTranslate(-option.rect.center().x(), 
                -option.rect.center().y())); 
    transform.rotate(90); 
    painter->setTransform(transform); 
    transform=transform.inverted(); 
    newOption.rect=transform.mapRect(newOption.rect); 
    QItemDelegate::paint(painter, newOption, index); 

    // restore state of painter 
    painter->setTransform(transform); 
} 

QSize CustomItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const 
{ 
    return QItemDelegate::sizeHint(option, index).transposed(); 
} 
+0

Спасибо за пример. Тем не менее, все еще получается пустое. Может быть, стоит отметить, что я подклассифицировал QStyledItemDelegate, хотя я бы не подумал, что это изменило бы ситуацию. Будет беспорядок вокруг немного. –

+0

Обновление содержит точное содержимое файла cpp, которое я использовал для проверки этого решения. Он работает отлично. 'QTransform :: fromTranslate' часть может быть удалена и все еще работает. –

+0

Хорошо «отлично» - это сильное слово. Существует проблема с границами ячеек, и это не может быть просто исправлено. –