История изменений
Исправление Alex_Golubev, (текущая версия) :
Как понял Word-wrap не может сам изменять размер ячейки. Как следствие не делает перенос. Нужно переопределять метод sizeHint. Сделал вот так, но результат переноса не получил. [code]
void TableViewColumnDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { if(!index.isValid()) return; painter->save();
if (option.state & QStyle::State_Selected){
painter->fillRect(option.rect, option.palette.highlight());
}
QString Text = index.data().toString();
qDebug() << "Text" << Text;
QFont Font = QApplication::font();
QFontMetrics Fm(Font);
QRect Rect = Fm.boundingRect(option.rect.left(), option.rect.top() ,
option.rect.width(), option.rect.height(),
Qt::AlignLeft|Qt::AlignTop|Qt::TextWordWrap,
Text);
painter->setPen(Qt::black);
painter->setFont(Font);
painter->drawText(Rect, Qt::AlignLeft|Qt::AlignTop|Qt::TextWordWrap, Text);
painter->restore();
} QSize TableViewColumnDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const { if(!index.isValid()) return QSize(); QString Text = index.data().toString(); QFont Font = QApplication::font(); QFontMetrics Fm(Font); QRect Rect = Fm.boundingRect(0, 0, option.rect.width(), 0, Qt::AlignLeft|Qt::AlignTop|Qt::TextWordWrap, Text); QSize size(option.rect.width(), Rect.height()); return size; }
[/code]
Исходная версия Alex_Golubev, :
Как понял Word-wrap не может сам изменять размер ячейки. Как следствие не делает перенос. Нужно переопределять метод sizeHint. Сделал вот так, но результат переноса не получил. [code] void TableViewColumnDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { if(!index.isValid()) return; painter->save();
if (option.state & QStyle::State_Selected){
painter->fillRect(option.rect, option.palette.highlight());
}
QString Text = index.data().toString();
qDebug() << "Text" << Text;
QFont Font = QApplication::font();
QFontMetrics Fm(Font);
QRect Rect = Fm.boundingRect(option.rect.left(), option.rect.top() ,
option.rect.width(), option.rect.height(),
Qt::AlignLeft|Qt::AlignTop|Qt::TextWordWrap,
Text);
painter->setPen(Qt::black);
painter->setFont(Font);
painter->drawText(Rect, Qt::AlignLeft|Qt::AlignTop|Qt::TextWordWrap, Text);
painter->restore();
}
QSize TableViewColumnDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const { if(!index.isValid()) return QSize(); QString Text = index.data().toString(); QFont Font = QApplication::font(); QFontMetrics Fm(Font); QRect Rect = Fm.boundingRect(0, 0, option.rect.width(), 0, Qt::AlignLeft|Qt::AlignTop|Qt::TextWordWrap, Text); QSize size(option.rect.width(), Rect.height()); return size; } [/code]