CheckBox в QTableView |
Здравствуйте, гость ( Вход | Регистрация )
CheckBox в QTableView |
Viper360 |
26.1.2010, 14:48
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 17.1.2010 Пользователь №: 1379 Спасибо сказали: 0 раз(а) Репутация: 0 |
Доброго времени суток! Подскажите, как побороть проблему с чекбоксами : унаследовал модель от QSqlQueryModel чтобы поля БД типа boolean отображались как Qt::CheckStateRole :
Но далее столкнулся с тем, что чекбокс выравнивается по левому краю ячейки и текст TRUE/FALSE (естественно) не пропадает. Пошел таким путем :
чтобы убрать текст, а для выравнивания создал делегат :
После чего вставил его в необходимые колонки с помощью setItemDelegateForColumn. Но самая большая беда осталась с выделением строк. Если выделять ячейку с чекбоксом, то выделение его закрывает (перекрывает), т.е. видно его только в том кусочке ячейки, в котором он было до установки делегата. И еще при установке делегата меняется стиль самого выделения, вместо красивой закругленной рамки появляется грубая заливка по контуру. Помогите пожалуйста, может кто решал схожие проблемы. Изначально решил свою проблему просто перекрыв QSqlQueryModel::flags и для полей с чекбоксами грубо установил flags=Qt::ItemIsUserCheckable; без возможности выделения, но сейчас появилась большая необходимость вспомнить о проблеме и решить ее. Очень надеюсь на помощь, либо подсказку. Заранее спасибо! |
|
|
Litkevich Yuriy |
26.1.2010, 15:45
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
в методе vtabmodel::data, для роли Qt::DisplayRole, для столбца с флажком возвращай QVariant(), т.е. пустое значение, тогда текста ни какого не будет
|
|
|
Viper360 |
27.1.2010, 1:51
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 17.1.2010 Пользователь №: 1379 Спасибо сказали: 0 раз(а) Репутация: 0 |
в методе vtabmodel::data, для роли Qt::DisplayRole, для столбца с флажком возвращай QVariant(), т.е. пустое значение, тогда текста ни какого не будет Спасибо за ответ! Сделал как посоветовал, текста нет. Но впрочем нечего не изменилось, с выделением та же проблема : |
|
|
Litkevich Yuriy |
27.1.2010, 7:58
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Viper360, а как себя это представление ведёт если не устанавливать собственного делегата?
|
|
|
Viper360 |
27.1.2010, 10:15
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 17.1.2010 Пользователь №: 1379 Спасибо сказали: 0 раз(а) Репутация: 0 |
Viper360, а как себя это представление ведёт если не устанавливать собственного делегата? Да, именно при установке делегата появляются проблемы с выделением. Но как я говорил ранее, без него чекбоксы выравниваются по левому краю ячейки : В ячейке слева есть маленький кусок, выделенный под чекбокс, четко его видно при изменении ширины столбца (с делегатом) : Но все-же, как выровнять этот чекбокс по центру ячейки чтобы не кривилась прорисовка выделения? |
|
|
Litkevich Yuriy |
27.1.2010, 10:36
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Viper360, не приходилось заниматься такими вещами, но я бы пошёл по пути использования метода paint вместо drawCheck
по идее в этом методе можно с помощью QStyleOptionViewItem выставлять выравнивание (QStyleOptionViewItem::displayAlignment), надо поискать пример применения этого метода.Но все-же, как выровнять этот чекбокс по центру ячейки чтобы не кривилась прорисовка выделения? есть ещё подозрение, что ты не верную область прорисовки задаёшь, без учёта области которая передаётся в метод drawCheck ты в нём игнорируешь аргумент - const QRect &
|
|
|
igor_bogomolov |
27.1.2010, 13:28
Сообщение
#7
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Но все-же, как выровнять этот чекбокс по центру ячейки чтобы не кривилась прорисовка выделения? Делал я себе набор делегатов-виджетов, один из них как раз check box. Приложил тестовый пример использующий его. У меня там, правда, свои заморочки, но его не сложно будет адаптировать под себя. Сообщение отредактировал Litkevich Yuriy - 27.1.2010, 14:44
Прикрепленные файлы
|
|
|
aasavelev |
9.2.2015, 19:58
Сообщение
#8
|
Новичок Группа: Новичок Сообщений: 9 Регистрация: 20.12.2013 Пользователь №: 4015 Спасибо сказали: 2 раз(а) Репутация: 0 |
Реализую CheckBox в TableView. Но осталось одна проблема когда изменяю состояние CheckBox.оно не сохраняется в базу. Подскажите почему? Что нужно исправить?
|
|
|
Текстовая версия | Сейчас: 23.11.2024, 4:23 |