LINUX.ORG.RU

История изменений

Исправление 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]