Как настроить таблицу QTableWidget по ширине?

Примечание ( само окно фиксировано в размере).

Имеется таблица в таком виде сейчас: введите сюда описание изображения

Стоит растяжение последней ячейки, но как видите, если текста там много, то он обрезается и его никак не просмотреть. Если убрать растяжение и поставить, например :

ui->tableWidget->horizontalHeader()->setSectionResizeMode(6,QHeaderView::ResizeToContents);

то казалось, бы всё будет нормально, но при наличии в последней ячейке малого количества текста это выглядит убого: (таблица обрезана). введите сюда описание изображения

В общем, подскажите, пожалуйста, как можно настроить ее так, чтобы всё отображалось красиво?


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

Автор решения: S. Nick

stretchLastSection : bool

Это свойство указывает, занимает ли последний видимый раздел в заголовке все доступное пространство.

Больше https://doc.qt.io/qt-5/qheaderview.html#stretchLastSection-prop

→ Ссылка
Автор решения: Sergey Tatarincev

У вас задается подгон по содержимому. для растяжения на все доступное пространство (так можно растянуть не только последний столбец):

ui->tableWidget->horizontalHeader()->setSectionResizeMode(6, QHeaderView::Stretch);

Более подробно о возможных см описание enum QHeaderView::ResizeMode в документации: https://doc.qt.io/qt-5/qheaderview.html#ResizeMode-enum

Если столбец последний, то как и советуют в предыдущем ответе:

ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
→ Ссылка
Автор решения: Sergey Tatarincev

После заполнения таблицы можно найти самый длинный текст и подстроить минимальную ширину секции под его длину:

QString s = "САМАЯ ДЛИННАЯ СТРОКА"; // нам понадобится текст самой длинной строки
QFontMetrics m(this->font()); // и метрики шрифта
QRect textRect = m.boundingRect(QRect(0,0,0,0),Qt::TextWordWrap,s); // Найдем геометрические параметры текста (высота/ширина в пикселях) с учетом перевода строк
ui->tableWidget->horizontalHeader()->setMinimumWidth(textRect.width()); // Теперь можно установить минимальную ширину

При установленом StretchLastSection, подогнать ширину под содержимое можно двойным кликом тут:

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

→ Ссылка