Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: vulko от Июль 18, 2014, 13:29



Название: Отображение всего текста без обрезания в QTableWidget
Отправлено: vulko от Июль 18, 2014, 13:29
Ситуация такая, есть QTableWidget, который растягивается по родителю (qdialog).

Код:
    verticalHeader()->setVisible(false);
    setRowCount(0);
    setColumnCount(8);
    horizontalHeader()->setResizeMode(QHeaderView::Stretch);
    setSelectionBehavior(QAbstractItemView::SelectRows);
    setSelectionMode(QAbstractItemView::SingleSelection);
    setFocusPolicy(Qt::NoFocus);
    setVerticalScrollMode(QAbstractItemView::ScrollPerItem);
    setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
    setEditTriggers(QAbstractItemView::NoEditTriggers);
    verticalHeader()->setDefaultSectionSize(15);
    resizeColumnsToContents();

Размер столбцов выбирается автоматом внутри QT.

Все вроде неплохо, но периодически цифры в ячейках обрезаются до вида "12...", вместо "12345", хотя соседние столбцы можно было бы и уменьшить...

Можно ли как-то запретить подобные обрезания текста, или придется вручную вычислять размеры столбцов, чего очень не хотелось бы...?


Название: Re: Отображение всего текста без обрезания в QTableWidget
Отправлено: Fregloin от Июль 22, 2014, 09:50
Смотрите в сторону QTableView(Widget)::horizontalHeader::setSectionResizeMode(QHeaderView::ResizeMode)


Название: Re: Отображение всего текста без обрезания в QTableWidget
Отправлено: vulko от Июль 23, 2014, 09:09
Смотрите в сторону QTableView(Widget)::horizontalHeader::setSectionResizeMode(QHeaderView::ResizeMode)

Спс, но у меня 4.8, там есть только
void QHeaderView::setResizeMode ( int logicalIndex, ResizeMode mode )

если правильно понимаю, могу по индексу для каждого столбца задать ResizeMode.

Попробую такой вариант, возможно заработает.


Название: Re: Отображение всего текста без обрезания в QTableWidget
Отправлено: Fregloin от Июль 23, 2014, 10:18
в 4.8 это есть, просто называется немного по-другому, поищите внимательней, я в 4.8 тоже это юзал если память не изменяет.


Название: Re: Отображение всего текста без обрезания в QTableWidget
Отправлено: s_Creator от Июль 25, 2014, 06:47
попробуй
Код:
resizeColumnsToContents ()


Название: Re: Отображение всего текста без обрезания в QTableWidget
Отправлено: vulko от Июль 25, 2014, 09:26
попробуй
Код:
resizeColumnsToContents ()

данные в таблице постоянно обновляются, придется видимо делать вызов при каждом обновлении данных...


Название: Re: Отображение всего текста без обрезания в QTableWidget
Отправлено: vulko от Август 05, 2014, 15:30
Если вдруг кому потребуется, то для каждого столбца/строки можно задавать ResizeMode.

У меня например первый слобец растягивается, остальные по размерам содержимого.

Код:
    horizontalHeader()->setResizeMode(0, QHeaderView::Stretch);
    horizontalHeader()->setResizeMode(1, QHeaderView::ResizeToContents);
    horizontalHeader()->setResizeMode(2, QHeaderView::ResizeToContents);
    horizontalHeader()->setResizeMode(3, QHeaderView::ResizeToContents);
    horizontalHeader()->setResizeMode(4, QHeaderView::ResizeToContents);
    horizontalHeader()->setResizeMode(5, QHeaderView::ResizeToContents);
    horizontalHeader()->setResizeMode(6, QHeaderView::ResizeToContents);