Название: qlistwidget Отправлено: koldun90 от Март 17, 2015, 10:44 Всем привет формирую список айтемов следующим образом
Код
в результате получается вот такая картина (http://s019.radikal.ru/i619/1503/82/ce9e9772aec9.png) (http://www.radikal.ru) вопрос заключается в следующем как мне отследить момент когда я ставлю крест в чекбоксе? При чем сам айтем я могу и не выделять Название: Re: qlistwidget Отправлено: __Heaven__ от Март 17, 2015, 10:54 Сигнал
Код пробовали? Название: Re: qlistwidget Отправлено: Fregloin от Март 17, 2015, 11:01 Учим модели... ;)
Название: Re: qlistwidget Отправлено: koldun90 от Март 17, 2015, 11:08 Сигнал попробывал вроде бы подходит (срабатывает только тогда когда я ставлю крестик)Код пробовали? но мне нужно сделать так чтобы я в своем списке мог активировать только один чекбокс. Те чтоб крестик ставился только на один айтем Название: Re: qlistwidget Отправлено: __Heaven__ от Март 17, 2015, 11:26 Ну вы же знаете, путь ко всем итемам...
Тот, который был изменен - ставим тру, всем остальным фолс Название: Re: qlistwidget Отправлено: koldun90 от Март 17, 2015, 11:46 Ну вы же знаете, путь ко всем итемам... я вас не совсем понял...Тот, который был изменен - ставим тру, всем остальным фолс мне нужно чтобы когда я ставил крестик на текущем айтеме, чтобы затем крестик на предыдущем айтеме как бы очистился как мне сделать это? или это нужно каждый айтем в цикле перебирать и если он checked делать ему unchecked? Название: Re: qlistwidget Отправлено: gil9red от Март 17, 2015, 12:00 Ну вы же знаете, путь ко всем итемам... я вас не совсем понял...Тот, который был изменен - ставим тру, всем остальным фолс мне нужно чтобы когда я ставил крестик на текущем айтеме, чтобы затем крестик на предыдущем айтеме как бы очистился как мне сделать это? или это нужно каждый айтем в цикле перебирать и если он checked делать ему unchecked? Поясняю: В цикле всем элементам убираете крестик, а текущему ставите Ну, или ведите учет: Заведите QListWidgetItem * lastCheckedItem В конструкторе инициализируете нулем Когда отлавливаете сигнал itemChanged(QListWidgetItem * item): Смотрите на item->checked(), если он стал true, проверяете, что lastCheckedItem не равен нулю и убираете у lastCheckedItem крестик (setChecked(dalse)) и запоминаете текущий элемент lastCheckedItem = item Ну что-то вроде такого :) Название: Re: qlistwidget Отправлено: Zerkin от Март 17, 2015, 12:04 gil9red собственно все разжевал, добавлю лишь, что если элементов не очень много, возможно, заводить отдельный указатель смысла и нет, в цикле все айтемы просто проверять, если же много, то да - логично завести.
Название: Re: qlistwidget Отправлено: __Heaven__ от Март 17, 2015, 12:07 Судя по скрину выше - не много.
Название: Re: qlistwidget Отправлено: Zerkin от Март 17, 2015, 12:07 Для любителей экстравагантных решений - можно было бы еще привязаться к selectionMode если он QAbstractItemView::SingleSelection и добавить поведение с чекбоксами =)
Название: Re: qlistwidget Отправлено: koldun90 от Март 17, 2015, 12:31 Код вот так вроде правильно да? Название: Re: qlistwidget Отправлено: Zerkin от Март 17, 2015, 12:52 Код вот так вроде правильно да? Почему самый верхний (0й) не проверяете? Название: Re: qlistwidget Отправлено: koldun90 от Март 17, 2015, 13:22 да там заголовок....
Название: Re: qlistwidget Отправлено: gil9red от Март 17, 2015, 13:45 Форматирование кода лучше соблюдать -- и вам проще, и другим людям, видящим ваш код :)
До: Код
После: Код
Расположение фигурных скобок -- на выбор, кому то нравится на следующей строке, кому то на текущей Название: Re: qlistwidget Отправлено: __Heaven__ от Март 17, 2015, 16:34 Я бы даже сделал так:
Код
Название: Re: qlistwidget Отправлено: Kurles от Март 18, 2015, 09:37 Я бы даже сделал так: А зацикливания не произойдёт? Состояния айтема меняем, соответственно снова же должен это слот вызваться? не надо это всё в Код
ui->listWidget->blockSignals(..) обернуть? Название: Re: qlistwidget Отправлено: __Heaven__ от Март 18, 2015, 15:52 Я бы даже сделал так: А зацикливания не произойдёт? Состояния айтема меняем, соответственно снова же должен это слот вызваться? не надо это всё в Код
ui->listWidget->blockSignals(..) обернуть? |