| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt]Выделение виджетов в QListWidget |
| Автор: feanor59 14.3.2009, 03:30 |
| Что есть: QListWidget, итемами в котором являются QCheckBox. QCheckBox устанавливаются с помощью setItemWidget(). Что надо: дать возможность ещё и _выделять_ итемы, а не только устанавливать/снимать галки. |
| Автор: SABROG 14.3.2009, 17:20 |
| Обрабатывай сигнал stateChanged и по нему выделяй или снимай выделение итема к которому он относится. Смотри в QItemSelectionModel. |
| Автор: feanor59 14.3.2009, 20:56 | ||
да нет. всё не так просто. мне нужно, чтобы виджеты выделялись независимо от изменения состояния. т. е. чтобы я могу выделить, к примеру, все виджеты, не изменив их состояния |
| Автор: SABROG 15.3.2009, 01:27 |
| А разве изначально сделано не так, чтобы виджет создавался только при двойном клике на итем? Или у тебя умышленно openPersistentEditor стоит? |
| Автор: feanor59 15.3.2009, 01:35 | ||
оО, нет, установеленные виджеты сразу активны, думаю ты сейчас про делегирование говоришь, а не про статическую установку виджетов на айтемы. и в случае делегирования, мне всё равно нужно, чтобы виджеты отображались всегда. |
| Автор: Любитель 16.3.2009, 20:00 |
| Быть может есть решение с QListWidget, но в любом случае лучше изначачально пользоваться чистым QListView, у него разрешается отметка элементов, у модели реализуется обработка соответствующей роли и устанавливается флаг, разрешающий отметку элементов. Как-то так |
| Автор: feanor59 17.3.2009, 12:35 | ||
хм, мб я не до конца вкурил, но как (где) в таком случае хранить состояния чекбоксов? т. е. модель это QStringListModel и она фактически хранит подписи к чекбоксам, а что делать с состояниями?! зы основываюсь на экземпле spinboxdelegate |
| Автор: Любитель 17.3.2009, 16:32 |
| Создавать свою модель. Можно наследоваться. Где хранить - непринципиально. |
| Автор: feanor59 17.3.2009, 18:22 | ||
уже вычитал) пробую. спасибо. |
| Автор: feanor59 18.3.2009, 01:08 |
| возникли проблемы: 1) при отображении делегата, текст самого элемента остаётся на фоне => наложение текста чекбокса и текста элемента. (UPD: поборол введением новой своей роли и возвратом пустой строки на дисплей роль) 2) какой флаг и как нужно поставить, чтобы можно было выделять _делегаты_? пока такого не нашёл. 3) есть ли возможность единожды сказать, чтобы все элементы списка отображались перманентно с делегатом редактирования? |
| Автор: feanor59 18.3.2009, 06:19 | ||
| Всплыла ещё одна проблема. После обновления QListView не устанавливается openPersistentEditor Код обновления:
При первом выполнении этого кода, всё отлично, при повторном openPersistentEditor не срабатывает. UPD: разобрался, проблема была в смарт поинтерах, а конкретно в том, что до того, как QListView получал новую модель, уничтожалась старая. |