Pull to refresh

Comments 5

Уже много лет таким пользуемся, статьи конечно не писали, но на форумах полно было: Qt Forum, Qt Centre, http://prog.org.ru/ и др. В основном конечно применялось к табличным виджетам, но к древовидным тоже интересно через expanded, collapsed.

Автоматически это делать нельзя и вот почему: ширина колонок в виджете может настраиваться пользователем, и как только пользователь эту ширину настроил — менять ее уже не нужно, потому что это дико бесит. Особенно дико это будет бесить когда у вас не две колонки, а штук десять, и все элементы двигаются туда-сюда просто потому, что какую-то ветку свернули.
Забыл добавить: массовый resizeColumnToContents — весьма небыстрая операция, и если у вас много элементов в дереве (тысяч тридцать, например), она может занимать пару секунд даже на хорошем железе.
Вешать такие операции на collapse/expand — опять же отличный вариант выбесить пользователя тормозами.
Вы конечно же правы насчёт неэффективности использования метода массового ресайза. Но его я привел скорее для полноты решения. На самом деле решается лишь проблема появления горизонтального скролла при выходе размера дерева за границы виджета в целом. Кейс довольно узкоспециализированный, но всё таки ходовой. Предполагается что виджет дерева не нужно изменять в размерах чтобы увидеть весь текст, как в «Проводнике» Windows. Там ведь тоже используется дерево с одной колонкой для отображения файловой структуры. И там колонка как раз ресайзится если содержимое становится больше его размеров, рисуется скролл и все счастливы. Может быть там это тоже как-то костыльно сделано, я не знаю. Но мне нужно было добиться такого эффекта, компонента с такой функцией я не нашел, зато нашлось вот такое решение. Может быть пора задуматься над созданием компонента дерева с одной колонкой, лол.
Скорректировал название статьи. Речь тут скорее про дерево с одной колонкой, хотя на форумах встречались люди, которым нужно было ресайзить последнюю колонку из нескольких.
Sign up to leave a comment.

Articles