Название: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю. Отправлено: xintrea от Июнь 16, 2008, 21:47 Здравствуйте!
Вот тут только что обнаружил неприятную особенность QTreeView - этот объект не хочет горизонтально скроллироваться, чтобы видеть концы длинных строк. Вот скрин (http://i.piccy.kiev.ua/i2/98/7c/43fe64a2cd6d13e42ae24c2c43ba.png) Видно, что прокрутка не сдвигается (она почему-то шириной в весь виджет). А концов строк невидно. И это еще маленькое дерево, а если веток будет больше, то вообще неясно как работать. Кстати, вертикальная прокрутка работает нормально. На скрине запечатлен момент, когда horisontalScrollBarPolicy=ScrollBarAlwaysOn. Если это свойство ставить в ScrollBarAsNeeded, то при сужении области объекта, горизонтальная прокрутка автоматически появляется тогда, когда она уже не нужна. Т.е. "длинные" ветки остались справа, их уже не видно. И в этот момент появляется прокрутка. Которая, в общем то, прокручивает очень мало - то что остатся справа увидеть невозможно. Все прочие параметры прокрутки оставлены те, которые выставляются при добавлении QTreeView на форму в дезигнере. Я, конечно, поигрался с разными параметрами, но результата не достиг. Вопрос - можно ли сделать нормальную горизонтальную прокрутку в объекте QTreeView, так, чтобы были видны полностью длинные строки дерева? Как настроить? Название: Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю. Отправлено: ритт от Июнь 17, 2008, 02:46 вроде бы, таска 210390 была о чём-то подобном (не уверен)
Название: Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю. Отправлено: lit-uriy от Июнь 17, 2008, 04:56 а она (прокрутка) и не должна показывать, она свою задачу выполнила - показала весь столбец.
Растяни столбец по ширине содержимого, и линейка прокрутки позволит прокручивать дальше. Название: Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю. Отправлено: Sergeich от Июнь 17, 2008, 10:57 treeView->header()->setResizeMode(QHeaderView::ResizeToContents)
Название: Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю. Отправлено: xintrea от Июнь 17, 2008, 17:11 treeView->header()->setResizeMode(QHeaderView::ResizeToContents) Нет, не помогает. Вроде, по описанию - ResizeToContents то что нужно. Но растягивание ширины столбца всеравно ограничивается шириной объекта. И прокрутка не появляется. В этом режиме ResizeToContents еще и невозможно мышкой расширить столбец за пределы оъекта, т.к. данный режим отменяет Interactive. Пропробовал режим Stretch, но это тоже не то - он просто расширяет автоматом столбец с деревом если есть свободное пространство. Во, нашел. Надо делать Код: treeView->resizeColumnToContents(0); но этот метод нужно вызывать при любом интерактивном изменении дерева. Сейчас повесил на слот click(), работает, но это не то что нужно (например столец не расширяется при навигации клавиатурой). Попробовал засунуть вызов в слоты update() и в repaint(), но эти слоты при интерактивном изменении не вызываются. Попробовал даже вначале программы включить разрешение вызова udate() Код: treeView->setUpdatesEnabled(true); но тоже толку нет. Вопрос - какой слот надо использовать в QTreeView, чтобы он вызывался при любом визуальном и программном изменении дерева? Название: Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю. Отправлено: Пантер от Июнь 17, 2008, 17:19 На данный вопрос не могу ответить. А вот как отловить перемещение при помощи клавы... Есть у QTreeView усть селекшнмодель, у которой в свою очередь есть сигнал изменения селекшина. Должно помочь.
Название: Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю. Отправлено: ритт от Июнь 17, 2008, 18:28 Вроде, по описанию - ResizeToContents то что нужно. Но растягивание ширины столбца всеравно ограничивается шириной объекта. И прокрутка не появляется. В этом режиме ResizeToContents еще и невозможно мышкой расширить столбец за пределы оъекта, т.к. данный режим отменяет Interactive. Пропробовал режим Stretch, но это тоже не то - он просто расширяет автоматом столбец с деревом если есть свободное пространство. Во, нашел. Надо делать Код: treeView->resizeColumnToContents(0); но этот метод нужно вызывать при любом интерактивном изменении дерева. Сейчас повесил на слот click(), работает, но это не то что нужно (например столец не расширяется при навигации клавиатурой). попробуй патчик в аттаче надеюсь, не пугает, что придётся пересобрать модуль гуи ) /* make sub-src */ Название: Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю. Отправлено: crocus от Июнь 17, 2008, 18:29 Код: treeView->resizeColumnToContents(0); З.Ы 4.4.1-20080414 Название: Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю. Отправлено: xintrea от Июнь 17, 2008, 22:05 Код: treeView->resizeColumnToContents(0); З.Ы 4.4.1-20080414 Може, что неправильно делаешь? Оно помогает только _после_ вызова. То есть, изменилось что на экране - надо дергать resizeColumnToContents(). И так каждый раз. У меня работает на Qt 4.3.0. Название: Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю. Отправлено: xintrea от Июнь 17, 2008, 22:15 попробуй патчик в аттаче Спасибо конечно, но надеюсь, не пугает, что придётся пересобрать модуль гуи ) /* make sub-src */ Вообще-то пугает. Не понимаю смысл сего действия! Это значит, я у себя в Qt либе что-то исправляю. И у меня интерфейс начинает работать согласно исправлениям. А когда я отдам прогу пользователям, что произойдет? У них будет работать по-другому? Пользователи тоже должны будут устанавливать исходники, патчить Qt либу, потом пересобирать ее чтобы получился аналогичный результат??? Название: Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю. Отправлено: ритт от Июнь 17, 2008, 22:29 да.
но есть ещё один аспект - если с патчем будет работать как требуется, на его основе можно сделать воркэроунд... Название: Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю. Отправлено: xintrea от Июнь 18, 2008, 18:55 Цитировать Это значит, я у себя в Qt либе что-то исправляю. И у меня интерфейс начинает работать согласно исправлениям. А когда я отдам прогу пользователям, что произойдет? У них будет работать по-другому? Пользователи тоже должны будут устанавливать исходники, патчить Qt либу, потом пересобирать ее чтобы получился аналогичный результат??? да.Ну и кому такая прога нужна будет??? Извините за то что щас скажу (я хорошо отношусь и к этому форуму, и к вам как спецу и модератору, и к тому что вы не поленились и патчик прислали, и к тому что на форуме хорошая творческая атмосфера, причем это заслуга и модераторов и пользователей, за это все спасибо). Но более уродскую залипуху придумать слоооожно. Сделать так - значит обеспечить, что программой вообще никто не будет пользоваться. Когда я натыкаюсь на такие программы, которые хренпаймешь как устанавливать надо, которые требуют определенной версии либ, докачки чего-то с CPAN, или как в XMMS, патчик на ядро просят наложить, или еще что-то дикое, меня это вымораживает! Я готов плюнуть разработчику в лицо и сказать - больше непиши, иди на стройку работать, тупая скатина! Что тебе мешало положить перловые модули нужных версий рядом со своими скриптами? Этож как тормозится развитие линуха, что люди не могут просто программу установить. Никакого желания так ёбстись с устновкой программ у нормального человека возникнуть не может! Значит, эта тупорылая тварь написала свое поделие не для людей, а для каких-то блин... биороботов в вакууме! Пусть такому разработчику космонавты на голову насрут! Уродцу этому моральному.. Пусть кажый день срут, пока не поумнеет! но есть ещё один аспект - если с патчем будет работать как требуется, на его основе можно сделать воркэроунд... А вот тут поподробнее, что имеется в виду под "воркэроунд"? Название: Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю. Отправлено: ритт от Июнь 19, 2008, 11:02 улыбнуло :)
только "насрут" - это как-то грубо... попробуй патч. если поможет, отменишь его и на его основе сделаешь наследника тривью в который ставишь подобный код - до момента исправления сможешь использовать свою тривьюху - и не потребуется патченная кутя. я не уверен, что твоя проблема именно в той баге, которую исправляет данный патч, но похоже на то (http://trolltech.com/developer/task-tracker/index_html?id=210390&method=entry). Название: Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю. Отправлено: crocus от Июнь 19, 2008, 12:42 Цитировать This will happen for example, if the header is not visible Мой случай - точно.Название: Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю. Отправлено: ритт от Июнь 19, 2008, 13:07 вот и брат по несчастью нашёлся )
а ксинтрея'у ещё добавлю: в данный момент кде4.1 разрабатывается на основе кутэ4.4.0/4.4.1. порой кдешники натыкаются на такие грабли в кутях, что пока приходится патчить стабильную ветку до тех пор, пока не выйдет исправление (примерно до 4.4.2). я бы не торопился отправлять кдешников работать на стройке. кстати, приведённый патч также из репозитариия кде... |