Russian Qt Forum
Октябрь 02, 2024, 05:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] QTableView с авторазмером ячеек - есть проблемы.  (Прочитано 4493 раз)
sarbash
Гость
« : Июнь 25, 2010, 10:48 »

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

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

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

Очень надеюсь на помощь. Спасибо.
« Последнее редактирование: Июнь 29, 2010, 20:57 от sarbash » Записан
sarbash
Гость
« Ответ #1 : Июнь 29, 2010, 13:53 »

Видимо, никому такой функционал не был нужен и никто не сталкивался с подобным. Что ж, пока установил костыль при помощи сигнала и зарепортил баг. Буду ждать результатов...
Записан
asvil
Гость
« Ответ #2 : Июнь 29, 2010, 19:07 »

Я пробовал использовать ResizeToContents для горизонтального заголовка и столкнулся с похожими проблемами. У меня была задача отобразить родительский для таблицы виджет равно такой ширины, какая необходима для всего горизонтального заголовка.
Первая особенность: пока таблица была невидима заголовки не изменяли свой размер.
Вторая, немного не в тему: ResizeToContents вместе с strechLastSection работает некорректно.
Решение заключается в ручном вызове resizeToContents, когда это было необходимо.
Записан
sarbash
Гость
« Ответ #3 : Июнь 29, 2010, 20:56 »

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

P.S. Если кому-то будет интересно решение - напишу отдельным постом.
« Последнее редактирование: Июнь 29, 2010, 21:03 от sarbash » Записан
Aeon
Гость
« Ответ #4 : Июль 27, 2010, 01:50 »

меня интересует решение, напиши.
Записан
sarbash
Гость
« Ответ #5 : Июль 29, 2010, 22:35 »

в changeEvent() отлавливается максимизация окна и возбуждается соответствующий сигнал. Сигнал в конструкторе присоединяется на слот ResizeRowsToContent(). На этот же слот вешается сигнал от хедера таблицы, возбуждаемый при изменении размера колонок. Собственно, ничего сложного. Один кастомный сигнал, всё остальное - из комплекта.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.12 секунд. Запросов: 21.