Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Cyrax от Января 10, 2008, 16:54



Название: QTreeView::resizeColumn<b>s</b>ToContents()...
Отправлено: Cyrax от Января 10, 2008, 16:54
Можно ли одной командой отресайзить все столбцы дерева ?

Почему-то метода QTreeView::resizeColumnsToContents() нет.
Есть только QTreeView::resizeColumnToContents(int)///


Название: Re: QTreeView::resizeColumn<b>s</b>ToContents()...
Отправлено: Racheengel от Января 11, 2008, 01:44
QHeaderView::setResizeMode(QHeaderView::ResizeToContents) не поможет?


Название: Re: QTreeView::resizeColumn<b>s</b>ToContents()...
Отправлено: Cyrax от Января 11, 2008, 13:23
Цитировать
QHeaderView::setResizeMode(QHeaderView::ResizeToContents) не поможет?
Решение, но работает немного некорректно.
Ресайз действительно происходит, для всех стобцов, но кроме последнего.
Причём независимо от ширины окна, в котором находится QTreeView. проверял с разной шириной окна. Ширина последнего столбца (остальные - по содержимому) минимизируется (с многоточиями) так, чтобы всё QTreeView влезло по ширине в окно без полос прокрутки. Если предыдущие столбцы (отрегулированные по ширине) не влезают в окно без полос прокрутки, то полосы прокрутки появляются, при этом последний столбец по-прежнему минимален по ширине (с многоточиями).

Логика абсолютно непонятна...


Название: Re: QTreeView::resizeColumn<b>s</b>ToContents()...
Отправлено: Cyrax от Января 11, 2008, 23:01
Причём QHeaderView::setResizeMode(QHeaderView::ResizeToContents) блокирует возможность изменения ширины столбцов пользователем...


Название: Re: QTreeView::resizeColumn<b>s</b>ToContents()...
Отправлено: Racheengel от Января 12, 2008, 02:16
ну так правильно, это помоему взаимоисключающие вещи...
либо одно, либо другое


Название: Re: QTreeView::resizeColumn<b>s</b>ToContents()...
Отправлено: Cyrax от Января 12, 2008, 10:28
Цитировать
ну так правильно, это помоему взаимоисключающие вещи...
либо одно, либо другое
Да, учитывая смысл команды (resizeMode).
Тогда этот вариант вообще никак не катит.

Нужен разовый ресайз по всем столбцам:
Цитировать
QTreeView::resizeColumnsToContents()


Название: Re: QTreeView::resizeColumn<b>s</b>ToContents()...
Отправлено: Racheengel от Января 12, 2008, 13:40
Ресайз действительно происходит, для всех стобцов, но кроме последнего.
Причём независимо от ширины окна, в котором находится QTreeView. проверял с разной шириной окна. Ширина последнего столбца (остальные - по содержимому) минимизируется (с многоточиями) так, чтобы всё QTreeView влезло по ширине в окно без полос прокрутки. Если предыдущие столбцы (отрегулированные по ширине) не влезают в окно без полос прокрутки, то полосы прокрутки появляются, при этом последний столбец по-прежнему минимален по ширине (с многоточиями).

Это поведение похоже на баг. Надо проверить, и если баг, писать тролям репорт...

А как понимать это:
Нужен разовый ресайз по всем столбцам:
и одновременно изменение размера пользователем?

Можно вызвать QHeaderView::setResizeMode(QHeaderView::ResizeToContents), а потом сбросить этот самый ResizeMode в предыдущее состояние, тогда по идее можно будет ресайзить вручную.


Название: Re: QTreeView::resizeColumn<b>s</b>ToContents()...
Отправлено: ритт от Января 12, 2008, 17:05
со stretchLastSection пробовал баловаться?