Как можно в методе 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();
}

введите сюда описание изображения


Ответы (0 шт):