Название: QSqlTableModel + checkBox = не реагирует на нажатия Отправлено: ilnile от Июль 18, 2013, 22:52 Добрый день. Подскажите почему у меня не реагирует на нажатия checkbox в унаследованной модели с переопределенными методами?
mymodel.h Код: #include <QSqlTableModel> mymodel.cpp Код: #include "mymodel.h" Еще такой глюк: когда кликаю по полю с checkbox появляется spinbox рядом. После этого все остальные ячейки больше не редактируются до след обновления. Название: Re: QSqlTableModel + checkBox = не реагирует на нажатия Отправлено: kambala от Июль 19, 2013, 00:41 надо отправлять сигнал dataChanged в setData() если сам обрабатываешь. и DisplayRole вообще не обрабатывай в data() для колонок.
Название: Re: QSqlTableModel + checkBox = не реагирует на нажатия Отправлено: ilnile от Июль 19, 2013, 12:07 С setData() разобрался. Но checkbox по прежнему не нажимаются. Такое чувство что я упускаю какой то маленький нюанс из-за которого все это происходит.
Когда нажимаю на checkbox он не нажимается, ведет себя как будто на поле наложена картинка (checkbox) и при нажатии на него он просто игнорирует его. Зато в поле появляется spinbox, если я изменяю в нем значение до 0, то checkbox снимает галочку. Название: Re: QSqlTableModel + checkBox = не реагирует на нажатия Отправлено: kambala от Июль 19, 2013, 12:10 spinbox из воздуха не может появиться. у тебя свой делегат?
дебаггером проверял реальные значения чекбоксов? Название: Re: QSqlTableModel + checkBox = не реагирует на нажатия Отправлено: ilnile от Июль 19, 2013, 12:58 Не знаю как это объяснить. Залил видео на ютуб.
http://youtu.be/q5Ntw4JBkik (http://youtu.be/q5Ntw4JBkik) Название: Re: QSqlTableModel + checkBox = не реагирует на нажатия Отправлено: Bepec от Июль 19, 2013, 13:31 На мой взгляд такие вот кусты - ячейка редактируемая с числовым значением.
При нажатии на неё вызывается стандартный делегат для чисел - spinbox. И да, checkBox у вас там только отрисовывается. Его как виджет там не существует. Для нормального отщелкивания вам нужно или его создавать (в своём делегате), или возвращать для ячейки bool значение в displayRole. Вроде должно сработать, хотя хз. Я давно не работал с моделями. Название: Re: QSqlTableModel + checkBox = не реагирует на нажатия Отправлено: kambala от Июль 19, 2013, 13:32 несомненно, готовый проект для тестов выложить было сложнее.
попробуй сразу возвращать QVariant() для всех остальных ролей чекбоксов вместо вызова базового класса в data(). у меня при наследовании от QAbstractItemModel реализация такая: Код
Название: Re: QSqlTableModel + checkBox = не реагирует на нажатия Отправлено: ilnile от Июль 19, 2013, 15:01 Создал тестовый проект, инициализировал БД, прикрутил вьюху и делегат. Все отображается, нажимается, НО изменений в БД не происходит.
Пожалуйста подправьте код или подскажите какой сигнал нужно добавить. http://rghost.ru/47526684 (http://rghost.ru/47526684) |