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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Несколько колонок в QListView. Как?  (Прочитано 9907 раз)
voltron
Гость
« : Январь 28, 2013, 15:48 »

Возникла необходимость в отображении нескольких колонок элементов в QListView. Нечто похожее на  область просмотра файлов в Проводнике, когда там отображаются имена файлов в несколько столбцов и при изменении размера окна число столбцов и их высота (количество элементов) автоматически меняется.

Рассматривал вариант с использованием QTableView, но там фиксированный размер таблицы, что не подходит.

Можно ли сделать такое в Qt? Если да, то с чего начинать, может, есть примеры кода?

Qt 4.8.2, Windows/Linux/Mac OS
Записан
vintik
Гость
« Ответ #1 : Январь 28, 2013, 17:11 »

Есть виджет QColumnView, можно на него посмотреть. Честно говоря, не помню как там проводник работает..
Кстати, в любой вьюхе можно скрывать колонки. Так что не вижу проблем в использовании QTableView. Главное понять когда и при каких условиях скрывать/отображать определённые колонки.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #2 : Январь 28, 2013, 17:45 »

Код
C++ (Qt)
QListView::setFlow( QListView::LeftToRight );
Нет, чтобы просто по-внимательнее посмотреть описание QListView в ассистенте, начинают изобретать велосипед...
« Последнее редактирование: Январь 28, 2013, 17:48 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
voltron
Гость
« Ответ #3 : Январь 29, 2013, 15:58 »

Код
C++ (Qt)
QListView::setFlow( QListView::LeftToRight );
Нет, чтобы просто по-внимательнее посмотреть описание QListView в ассистенте, начинают изобретать велосипед...

Угу, и будут колонки кривые и косые, вот такие


Посоветуйте невелосипедное решение, чтобы было примерно так при любых изменениях размера окна и произвольных длинах текста
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #4 : Январь 29, 2013, 16:20 »

Тогда не выставляй flow и включи wrapping и задай resizeMode:
Код
C++ (Qt)
lv.setResizeMode( QListView::Adjust );
lv.setWrapping( true );
 
« Последнее редактирование: Январь 29, 2013, 16:24 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
_OLEGator_
Гость
« Ответ #5 : Январь 29, 2013, 17:03 »

Возможно это поможет:
Код
C++ (Qt)
void QListView::setUniformItemSizes ( bool enable )
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #6 : Январь 29, 2013, 17:07 »

Возможно это поможет:
Код
C++ (Qt)
void QListView::setUniformItemSizes ( bool enable )
Сей флаг используется только для оптимизации. На отображение он не влияет.
Указанные мной выше правки полностью решают проблему ТС.
Записан

Qt 5.11/4.8.7 (X11/Win)
_OLEGator_
Гость
« Ответ #7 : Январь 29, 2013, 21:26 »

Сей флаг используется только для оптимизации. На отображение он не влияет.
Указанные мной выше правки полностью решают проблему ТС.

А если проверить?
У меня он как раз всем элементам списка размер выставил одинаковый, правда теперь в некоторых элементах текст не помещается и обрезается тремя точками.
Записан
voltron
Гость
« Ответ #8 : Февраль 04, 2013, 15:29 »

Тогда не выставляй flow и включи wrapping и задай resizeMode:
Код
C++ (Qt)
lv.setResizeMode( QListView::Adjust );
lv.setWrapping( true );
 
Спасибо, почти то, что нужно. А можно как-то добиться отображения полных, а не обрезанных подписей?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #9 : Февраль 04, 2013, 16:55 »

Спасибо, почти то, что нужно. А можно как-то добиться отображения полных, а не обрезанных подписей?
А зачем включил uniformItemSizes?
Записан

Qt 5.11/4.8.7 (X11/Win)
voltron
Гость
« Ответ #10 : Февраль 05, 2013, 10:47 »

А зачем включил uniformItemSizes?
Упс... Виноват, осталось от предыдущих экспериментов. Спасибо, теперь все работает как надо
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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