Как можно в методе paint изменять размеры столбцов qtableView?
Хочу поменять размеры столбцов. Размеры столбцов должны равняться размеру выводимой информации. А так получается что "дата время" не вписывается в столбец "Дата".
Что сделал:
ui->tableView->setModel(model);
ui->tableView->setWordWrap(true);
ui->tableView->setTextElideMode(Qt::ElideNone);
ui->tableView->setItemDelegate(new TableViewColumnDelegate(this));
ui->tableView->verticalHeader()->setResizeMode(QHeaderView::ResizeToContents);
**ui->tableView->resizeColumnToContents(0); // думал этого будет достаточно
ui->tableView->resizeColumnToContents(1);
ui->tableView->horizontalHeader()->setResizeMode(0, QHeaderView::Fixed);
ui->tableView->horizontalHeader()->setResizeMode(1, QHeaderView::Fixed);
ui->tableView->horizontalHeader()->setResizeMode(2, QHeaderView::Stretch);**
Метод paint:
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(0).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();
}
