Russian Qt Forum
Ноябрь 24, 2024, 07:27
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Расположение колонками в списке (QListWidget или QTreeWidget)
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Расположение колонками в списке (QListWidget или QTreeWidget) (Прочитано 10983 раз)
andrew.k
Гость
Расположение колонками в списке (QListWidget или QTreeWidget)
«
:
Январь 28, 2011, 02:35 »
Подскажите, как расположить элементы в списке в несколько колонок.
QListWidget на сколько я понял не поддерживает колонки. Кути 4.
Что мне нужно.
У меня довольно много айтемов (порядка 60-70). Они checkable. Пользователь должен отметить необходимые. Если их расположить как обычно (в одну колонку), получится длинный список с полосой прокрутки, что очень неудобно и затрудняет поиск нужного элемента. Поэтому хотелось бы расположить их в списке так, чтобы они по возможности были видны все, либо как можно больше. Для этого хочу использовать колонки. Если элементы будут расположены в несколько колонок (3-4), то это будет удобно. Но как этого добиться в QTreeWidget я не понял.
И возможно ли вообще такое.
В свое время писал на VCL, там у списка была такая возможность. Просто задаешь количество колонок и элементы сами располагались в новой колонке, когда в текущей места больше нет. Соответственно при изменении размера списка, элементы пересортировывались, занимая свободное пространство.
Или может кто другой способ подскажет?
Хелп, пипл
Записан
andrew.k
Гость
Re: Расположение колонками в списке (QListWidget или QTreeWidget)
«
Ответ #1 :
Январь 28, 2011, 02:51 »
Нашел нечто похожее, но это не подходит, просто чтобы понять, что мне требуется.
В QListWidget свойство viewMode поставил в IconMode.
Элементы стали располагаться в несколько колонок. Но 1) длинные названия элементов листвиджет сокращает, оставляя в конце многоточие, это не подходит; 2) элементы можно свободно перетаскивать. это не нужно и нелепо выглядит.
Мне нужно как обычно сделано в диалоге выбора файлов, много имен в нескольких колонках и иконка рядом, а у меня вместо иконки чекбокс (как сделать чекбокс у элемента объяснять не нужно).
Так же я не понял, что делает свойство modelColumn.
Записан
Kolobok
Гость
Re: Расположение колонками в списке (QListWidget или QTreeWidget)
«
Ответ #2 :
Январь 28, 2011, 02:53 »
Посмотри эти методы QListView
setWrapping ( bool enable )
setFlow ( Flow flow )
setGridSize ( const QSize & size )
Записан
andrew.k
Гость
Re: Расположение колонками в списке (QListWidget или QTreeWidget)
«
Ответ #3 :
Январь 28, 2011, 03:02 »
Только что нашел, isWrapping.
Похоже это то, что нужно.
Сейчас посмотрю остальные.
GridSize уже смотрел. Не понял его назначения. Он уродует список
Записан
andrew.k
Гость
Re: Расположение колонками в списке (QListWidget или QTreeWidget)
«
Ответ #4 :
Январь 28, 2011, 03:04 »
понял с GridSize его нужно использовать совместно с wrapping, а то ерунда получается.
В любом случае размер у всех разный, поэтому задавать фиксированный не подходит.
Записан
andrew.k
Гость
Re: Расположение колонками в списке (QListWidget или QTreeWidget)
«
Ответ #5 :
Январь 28, 2011, 03:13 »
Спасибо колобок.
Осталось три вопроса.
1. Как запретить ему сокращать названия элементов? Так как элементы расположены очень плотно, то он сокращает текст (многоточие в конце). При чем не только у длинных. Даже у коротких.
2. Почему все элементы сбились в угол и не перемещаются с изменением размера списка. А так и сидят на месте.
3. Как задать количество колонок, например я хочу 2 или три строго. А он заполняет абы как, где место есть. В одной строке может оказаться 3 элемента в другой уже 2. Выглядит как хаос
Записан
andrew.k
Гость
Re: Расположение колонками в списке (QListWidget или QTreeWidget)
«
Ответ #6 :
Январь 28, 2011, 03:17 »
п.2 удалось починить играясь со свойствами. На сколько я понял layuotMode помог. Выставил Batched вместо SinglePass.
Теперь меня интересует только п.1
«
Последнее редактирование: Январь 28, 2011, 03:20 от andrew.k
»
Записан
andrew.k
Гость
Re: Расположение колонками в списке (QListWidget или QTreeWidget)
«
Ответ #7 :
Январь 28, 2011, 03:30 »
Когда создаю элементы в дизайнере, то ничего не сокращается, текст показывается полностью независимо от длины.
А в итоге получается с многоточием на конце.
Где грабли?
Еще вопрос возник, как сделать, чтобы все айтемы были по умолчанию с чекбоксом?
Сейчас программно ставлю setCheckState( Unchecked ). Тогда появляется чекбокс.
Даже в дизайнере, чтобы появился чекбокс, нужно сначала поставить Checked, потом Unchecked.
Выглядит так, как будто из-за появившегося чекбокса, чуть-чуть текста не поместилось. Как раз 2-3 буквы.
Почему так? Нормально ли это?
«
Последнее редактирование: Январь 28, 2011, 03:34 от andrew.k
»
Записан
andrew.k
Гость
Re: Расположение колонками в списке (QListWidget или QTreeWidget)
«
Ответ #8 :
Январь 28, 2011, 11:22 »
Вот скрин проблемы. Даже у коротких айтемов обрезаются две последних буквы. Почему?
Записан
Kolobok
Гость
Re: Расположение колонками в списке (QListWidget или QTreeWidget)
«
Ответ #9 :
Январь 28, 2011, 11:43 »
Цитата: andrew.k от Январь 28, 2011, 03:13
1. Как запретить ему сокращать названия элементов? Так как элементы расположены очень плотно, то он сокращает текст (многоточие в конце). При чем не только у длинных. Даже у коротких.
Посмотри QAbstractItemView::setTextElideMode ( Qt::TextElideMode mode )
Цитата: andrew.k от Январь 28, 2011, 03:13
3. Как задать количество колонок
Может лучше взять QTableWidget
Цитата: andrew.k от Январь 28, 2011, 03:30
Еще вопрос возник, как сделать, чтобы все айтемы были по умолчанию с чекбоксом?
По умолчанию - нужно свою модель писать.
Записан
andrew.k
Гость
Re: Расположение колонками в списке (QListWidget или QTreeWidget)
«
Ответ #10 :
Январь 28, 2011, 14:19 »
Цитата: Kolobok от Январь 28, 2011, 11:43
Цитата: andrew.k от Январь 28, 2011, 03:13
1. Как запретить ему сокращать названия элементов? Так как элементы расположены очень плотно, то он сокращает текст (многоточие в конце). При чем не только у длинных. Даже у коротких.
Посмотри QAbstractItemView::setTextElideMode ( Qt::TextElideMode mode )
Этот параметр определяет положение многоточия. Можно выбрать ElideNone, тогда двоеточия не будет. А текст будет просто обрезаться на границе айтема.
Сейчас вот так выглядит.
Что ему мешает сделать колонки шире? тем более треть ширины пустует. Он их пытается распределить в три колонки. Зачем.
Хотя недавно было по-другому и не влезали только две буквы
Цитата: Kolobok от Январь 28, 2011, 11:43
Цитата: andrew.k от Январь 28, 2011, 03:13
3. Как задать количество колонок
Может лучше взять QTableWidget
Тогда мне придется в ручную расставлять айтемы по ячейкам, зачем мне такой гемор?
Мне это нужно просто для экономии места на экране.
Цитата: Kolobok от Январь 28, 2011, 11:43
Цитата: andrew.k от Январь 28, 2011, 03:30
Еще вопрос возник, как сделать, чтобы все айтемы были по умолчанию с чекбоксом?
По умолчанию - нужно свою модель писать.
Зачем же я буду городить модель из-за такой ерунды
Я о другом, у только что созданного айтема, если посмотреть флаги, установлен флаг UserCheckable, но чекбокса нет. Как так? И его никак не отобразить.
Он появляется только после того как я делаю item->setCheckState( Unchecked );
Хотя один раз у меня получилось как-то и айтемы создавались сразу с чекбоксом без дополнительных действий.
«
Последнее редактирование: Январь 28, 2011, 14:26 от andrew.k
»
Записан
andrew.k
Гость
Re: Расположение колонками в списке (QListWidget или QTreeWidget)
«
Ответ #11 :
Январь 28, 2011, 14:59 »
Наконец-то удалось получить то, что нужно.
isWrapping true
resizeMode adjust
flowTopToBottom
layoutMode SinglePass
wordWrap false
Записан
andrew.k
Гость
Re: Расположение колонками в списке (QListWidget или QTreeWidget)
«
Ответ #12 :
Январь 28, 2011, 15:11 »
сейчас подумал, что удобнее сделать flow LeftTopRight
Но если ставлю LeftToRight получаю такую хрень.
Хотя до этого у меня получалось в две ровные колонки слева направо и вниз. Сейчас нет
Трындец с этим списком )
Записан
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...