Russian Qt Forum
Ноябрь 27, 2024, 07:40
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю.
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю. (Прочитано 11292 раз)
xintrea
Супер активный житель
Offline
Сообщений: 754
QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю.
«
:
Июнь 16, 2008, 21:47 »
Здравствуйте!
Вот тут только что обнаружил неприятную особенность QTreeView - этот объект не хочет горизонтально скроллироваться, чтобы видеть концы длинных строк.
Вот скрин
Видно, что прокрутка не сдвигается (она почему-то шириной в весь виджет). А концов строк невидно. И это еще маленькое дерево, а если веток будет больше, то вообще неясно как работать. Кстати, вертикальная прокрутка работает нормально.
На скрине запечатлен момент, когда horisontalScrollBarPolicy=ScrollBarAlwaysOn. Если это свойство ставить в ScrollBarAsNeeded, то при сужении области объекта, горизонтальная прокрутка автоматически появляется тогда, когда она уже не нужна. Т.е. "длинные" ветки остались справа, их уже не видно. И в этот момент появляется прокрутка. Которая, в общем то, прокручивает очень мало - то что остатся справа увидеть невозможно.
Все прочие параметры прокрутки оставлены те, которые выставляются при добавлении QTreeView на форму в дезигнере. Я, конечно, поигрался с разными параметрами, но результата не достиг.
Вопрос
- можно ли сделать нормальную горизонтальную прокрутку в объекте QTreeView, так, чтобы были видны полностью длинные строки дерева? Как настроить?
Записан
Собираю информацию по крупицам
http://webhamster.ru
ритт
Гость
Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю.
«
Ответ #1 :
Июнь 17, 2008, 02:46 »
вроде бы, таска 210390 была о чём-то подобном (не уверен)
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю.
«
Ответ #2 :
Июнь 17, 2008, 04:56 »
а она (прокрутка) и не должна показывать, она свою задачу выполнила - показала весь столбец.
Растяни столбец по ширине содержимого, и линейка прокрутки позволит прокручивать дальше.
Записан
Юра.
Sergeich
Гость
Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю.
«
Ответ #3 :
Июнь 17, 2008, 10:57 »
treeView->header()->setResizeMode(QHeaderView::ResizeToContents)
Записан
xintrea
Супер активный житель
Offline
Сообщений: 754
Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю.
«
Ответ #4 :
Июнь 17, 2008, 17:11 »
Цитата: Sergeich от Июнь 17, 2008, 10:57
treeView->header()->setResizeMode(QHeaderView::ResizeToContents)
Нет, не помогает. Вроде, по описанию - ResizeToContents то что нужно. Но растягивание ширины столбца всеравно ограничивается шириной объекта. И прокрутка не появляется.
В этом режиме ResizeToContents еще и невозможно мышкой расширить столбец за пределы оъекта, т.к. данный режим отменяет Interactive. Пропробовал режим Stretch, но это тоже не то - он просто расширяет автоматом столбец с деревом если есть свободное пространство.
Во, нашел. Надо делать
Код:
treeView->resizeColumnToContents(0);
но этот метод нужно вызывать при любом интерактивном изменении дерева. Сейчас повесил на слот click(), работает, но это не то что нужно (например столец не расширяется при навигации клавиатурой).
Попробовал засунуть вызов в слоты update() и в repaint(), но эти слоты при интерактивном изменении не вызываются. Попробовал даже вначале программы включить разрешение вызова udate()
Код:
treeView->setUpdatesEnabled(true);
но тоже толку нет.
Вопрос
- какой слот надо использовать в QTreeView, чтобы он вызывался при любом визуальном и программном изменении дерева?
Записан
Собираю информацию по крупицам
http://webhamster.ru
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю.
«
Ответ #5 :
Июнь 17, 2008, 17:19 »
На данный вопрос не могу ответить. А вот как отловить перемещение при помощи клавы... Есть у QTreeView усть селекшнмодель, у которой в свою очередь есть сигнал изменения селекшина. Должно помочь.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
ритт
Гость
Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю.
«
Ответ #6 :
Июнь 17, 2008, 18:28 »
Цитата: xintrea от Июнь 17, 2008, 17:11
Вроде, по описанию - ResizeToContents то что нужно. Но растягивание ширины столбца всеравно ограничивается шириной объекта. И прокрутка не появляется.
В этом режиме ResizeToContents еще и невозможно мышкой расширить столбец за пределы оъекта, т.к. данный режим отменяет Interactive. Пропробовал режим Stretch, но это тоже не то - он просто расширяет автоматом столбец с деревом если есть свободное пространство.
Во, нашел. Надо делать
Код:
treeView->resizeColumnToContents(0);
но этот метод нужно вызывать при любом интерактивном изменении дерева. Сейчас повесил на слот click(), работает, но это не то что нужно (например столец не расширяется при навигации клавиатурой).
попробуй патчик в аттаче
надеюсь, не пугает, что придётся пересобрать модуль гуи ) /* make sub-src */
Записан
crocus
Гость
Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю.
«
Ответ #7 :
Июнь 17, 2008, 18:29 »
Код:
treeView->resizeColumnToContents(0);
Тоже думал, что это поможет - однако нет.
З.Ы 4.4.1-20080414
Записан
xintrea
Супер активный житель
Offline
Сообщений: 754
Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю.
«
Ответ #8 :
Июнь 17, 2008, 22:05 »
Цитата: crocus от Июнь 17, 2008, 18:29
Код:
treeView->resizeColumnToContents(0);
Тоже думал, что это поможет - однако нет.
З.Ы 4.4.1-20080414
Може, что неправильно делаешь? Оно помогает только _после_ вызова. То есть, изменилось что на экране - надо дергать resizeColumnToContents(). И так каждый раз. У меня работает на Qt 4.3.0.
Записан
Собираю информацию по крупицам
http://webhamster.ru
xintrea
Супер активный житель
Offline
Сообщений: 754
Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю.
«
Ответ #9 :
Июнь 17, 2008, 22:15 »
Цитата: Константин от Июнь 17, 2008, 18:28
попробуй патчик в аттаче
Спасибо конечно, но
Цитата: Константин от Июнь 17, 2008, 18:28
надеюсь, не пугает, что придётся пересобрать модуль гуи ) /* make sub-src */
Вообще-то пугает. Не понимаю смысл сего действия! Это значит, я у себя в Qt либе что-то исправляю. И у меня интерфейс начинает работать согласно исправлениям. А когда я отдам прогу пользователям, что произойдет? У них будет работать по-другому? Пользователи тоже должны будут устанавливать исходники, патчить Qt либу, потом пересобирать ее чтобы получился аналогичный результат???
Записан
Собираю информацию по крупицам
http://webhamster.ru
ритт
Гость
Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю.
«
Ответ #10 :
Июнь 17, 2008, 22:29 »
да.
но есть ещё один аспект - если с патчем будет работать как требуется, на его основе можно сделать воркэроунд...
Записан
xintrea
Супер активный житель
Offline
Сообщений: 754
Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю.
«
Ответ #11 :
Июнь 18, 2008, 18:55 »
Цитата: Константин от Июнь 17, 2008, 22:29
Цитировать
Это значит, я у себя в Qt либе что-то исправляю. И у меня интерфейс начинает работать согласно исправлениям. А когда я отдам прогу пользователям, что произойдет? У них будет работать по-другому? Пользователи тоже должны будут устанавливать исходники, патчить Qt либу, потом пересобирать ее чтобы получился аналогичный результат???
да.
Ну и кому такая прога нужна будет??? Извините за то что щас скажу (я хорошо отношусь и к этому форуму, и к вам как спецу и модератору, и к тому что вы не поленились и патчик прислали, и к тому что на форуме хорошая творческая атмосфера, причем это заслуга и модераторов и пользователей, за это все спасибо). Но более уродскую залипуху придумать слоооожно. Сделать так - значит обеспечить, что программой вообще никто не будет пользоваться. Когда я натыкаюсь на такие программы, которые хренпаймешь как устанавливать надо, которые требуют определенной версии либ, докачки чего-то с CPAN, или как в XMMS, патчик на ядро просят наложить, или еще что-то дикое, меня это вымораживает! Я готов плюнуть разработчику в лицо и сказать - больше непиши, иди на стройку работать, тупая скатина! Что тебе мешало положить перловые модули нужных версий рядом со своими скриптами? Этож как тормозится развитие линуха, что люди не могут просто программу установить. Никакого желания так ёбстись с устновкой программ у нормального человека возникнуть не может! Значит, эта тупорылая тварь написала свое поделие не для людей, а для каких-то блин... биороботов в вакууме! Пусть такому разработчику космонавты на голову насрут! Уродцу этому моральному.. Пусть кажый день срут, пока не поумнеет!
Цитата: Константин от Июнь 17, 2008, 22:29
но есть ещё один аспект - если с патчем будет работать как требуется, на его основе можно сделать воркэроунд...
А вот тут поподробнее, что имеется в виду под "воркэроунд"?
Записан
Собираю информацию по крупицам
http://webhamster.ru
ритт
Гость
Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю.
«
Ответ #12 :
Июнь 19, 2008, 11:02 »
улыбнуло
только "насрут" - это как-то грубо...
попробуй патч. если поможет, отменишь его и на его основе сделаешь наследника тривью в который ставишь подобный код - до момента исправления сможешь использовать свою тривьюху - и не потребуется патченная кутя.
я не уверен, что твоя проблема именно в той баге, которую исправляет данный патч, но похоже на то (
http://trolltech.com/developer/task-tracker/index_html?id=210390&method=entry
).
Записан
crocus
Гость
Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю.
«
Ответ #13 :
Июнь 19, 2008, 12:42 »
Цитировать
This will happen for example, if the header is not visible
Мой случай - точно.
Записан
ритт
Гость
Re: QTreeView - прокрутка не показывает всю строку. Есть ли решение? Скрин прилагаю.
«
Ответ #14 :
Июнь 19, 2008, 13:07 »
вот и брат по несчастью нашёлся )
а ксинтрея'у ещё добавлю: в данный момент кде4.1 разрабатывается на основе кутэ4.4.0/4.4.1. порой кдешники натыкаются на такие грабли в кутях, что пока приходится патчить стабильную ветку до тех пор, пока не выйдет исправление (примерно до 4.4.2).
я бы не торопился отправлять кдешников работать на стройке. кстати, приведённый патч также из репозитариия кде...
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...