Qt: установить ширину столбца

Модератор: Модераторы разделов

IMB
Сообщения: 2567
ОС: Debian

Qt: установить ширину столбца

Сообщение IMB »

Доброго дня!
Приложение написано с использованием Qt 4.7 и выводит некоторые данные в табличном виде, заранее известно, что некоторые столбцы будут содержать текст не более определённой длины и для них хотелось бы установить фиксированную ширину. Пример подобных данных - дата и время в формате ISO, например 2011-10-14 12:38:57.
не работает

Код: Выделить всё

ui->tableWidget->setColumnWidth(COLUMN_DATE, fontMetrics().width("9", 19));

Колонка сжимается до 1 символа.
частично работает

Код: Выделить всё

ui->tableWidget->setColumnWidth(COLUMN_DATE, fontMetrics().width("9999-99-99 99:99:99"));

Помещается почти весь текст, кроме секунд.
Вопрос - как правильно расчитать необходимую ширину колонки зная формат данных в нём?
Спасибо.
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Qt: установить ширину столбца

Сообщение NickLion »

QTableView::resizeColumnToContents?
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: Qt: установить ширину столбца

Сообщение IMB »

Это немного не то, она сработает только после "наполнения", что приведёт к видимому изменению размеров. А хотелось бы задать фиксированный размер для колонки на этапе задания заголовка.
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Qt: установить ширину столбца

Сообщение NickLion »

Если честно - не занимался подобными подгонками, делал всегда вот так:

Код: Выделить всё

ui->tableView->horizontalHeader()->setResizeMode( QHeaderView::ResizeToContents );

Но раз Вы именно так хотите, то 2 замечания:
1. Почему fontMetrics() берётся не от tableView?
2. Не учтены возможные отступы. Тут наверное придётся смотреть в сторону QStyle. Или попробовать sizeHint для заголовка задать.
Спасибо сказали: