Russian Qt Forum

Qt => Model-View (MV) => Тема начата: sarbash от Июнь 25, 2010, 10:48



Название: [РЕШЕНО] QTableView с авторазмером ячеек - есть проблемы.
Отправлено: sarbash от Июнь 25, 2010, 10:48
Всем привет.
Для табличных шапок выставил режим размерности setResizeMode(QHeaderView::ResizeToContents).
Однако, при первом отображении окна с таблицей, высота строк выставляется некорректно. Если немного изменить вручную размер окна, то всё приходит в норму. Также, некорректной становится высота строк при максимизации/нормализации окна. События переопределить не проблема, проблема в том, что события происходят до фактического изменения состояния окна. У кого какие есть идеи по этому поводу? Как лучше сделать, чтобы после изменения состояния (state) окна (Minimized/Maximized), автоматически подгонялся и размер ячеек таблицы?

P.S. Проблему с первым отображением окна с таблицей решил. Нерешённой осталась вторая проблема - автоподбор высоты при изменении состояния окна. Такое впечатление, что оно работает, но с опозданием. То есть, если максимизировать окно, а потом вернуть в нормальное состояние, то высота строк в нормальном состоянии как раз подходит для максимизированного состояния окна, а если после этого снова максимизировать, то высота оказывается как раз подходящей для предыдущего -- нормального -- состояния окна.

P.P.S. Методом научного тыка выяснено: на минимизацию таблица реагирует адекватно. Проблема наблюдается только при переходе из нормального состояния в максимизированное.

Очень надеюсь на помощь. Спасибо.


Название: Re: QTableView с авторазмером ячеек - есть проблемы.
Отправлено: sarbash от Июнь 29, 2010, 13:53
Видимо, никому такой функционал не был нужен и никто не сталкивался с подобным. Что ж, пока установил костыль при помощи сигнала и зарепортил баг. Буду ждать результатов...


Название: Re: QTableView с авторазмером ячеек - есть проблемы.
Отправлено: asvil от Июнь 29, 2010, 19:07
Я пробовал использовать ResizeToContents для горизонтального заголовка и столкнулся с похожими проблемами. У меня была задача отобразить родительский для таблицы виджет равно такой ширины, какая необходима для всего горизонтального заголовка.
Первая особенность: пока таблица была невидима заголовки не изменяли свой размер.
Вторая, немного не в тему: ResizeToContents вместе с strechLastSection работает некорректно.
Решение заключается в ручном вызове resizeToContents, когда это было необходимо.


Название: Re: QTableView с авторазмером ячеек - есть проблемы.
Отправлено: sarbash от Июнь 29, 2010, 20:56
Про некорректность - верное замечание. Я там в самом последнем послесловии в первом посте упомянул о проблеме.
Другую проблему я получил - заметно стал тормозить интерфейс, когда я в двух таблицах, поделенных вертикальным сплиттером, указал параметр setResizeMode(QHeaderView::ResizeToContents) на обе шапки.
В итоге, я отказался от этого параметра вообще и изменил реализацию.
В общем, можно сказать, что проблему я решил, тему можно закрывать.
Благодарю за участие.

P.S. Если кому-то будет интересно решение - напишу отдельным постом.


Название: Re: [РЕШЕНО] QTableView с авторазмером ячеек - есть проблемы.
Отправлено: Aeon от Июль 27, 2010, 01:50
меня интересует решение, напиши.


Название: Re: [РЕШЕНО] QTableView с авторазмером ячеек - есть проблемы.
Отправлено: sarbash от Июль 29, 2010, 22:35
в changeEvent() отлавливается максимизация окна и возбуждается соответствующий сигнал. Сигнал в конструкторе присоединяется на слот ResizeRowsToContent(). На этот же слот вешается сигнал от хедера таблицы, возбуждаемый при изменении размера колонок. Собственно, ничего сложного. Один кастомный сигнал, всё остальное - из комплекта.