Поиск:

Ответ в темуСоздание новой темы Создание опроса
> QTableView + QSqlTableModel + checkbox 
:(
    Опции темы
Alca
Дата 10.11.2012, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 2
Всего: 50



Хочу булевое поле из БД отображать как чекбокс.
Что-то на эту тему ни чего подходящего не нагуглил.


Это сообщение отредактировал(а) Alca - 10.11.2012, 23:52


--------------------
PM WWW ICQ Skype Jabber   Вверх
loneybibi
Дата 11.11.2012, 04:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 28.5.2010
Где: Донецк (Украина)

Репутация: 3
Всего: 3



Цитата(Alca @ 10.11.2012,  22:51)
Хочу булевое поле из БД отображать как чекбокс.
Что-то на эту тему ни чего подходящего не нагуглил.

Используйте делегаты для QTableView. В демо Qt есть много примеров, что то похожее там было. Поищите в гугл про делегаты QStyledItemDelegate.

Схема будет приблизительно такой:
-Создать класс на основе QStyledItemDelegate
-Переопределить событие paint() этого класса
-В переопределенном событии paint() отрисовать QCheckBox в ячейке

Потом установить этот касс как делегат для определенной колонки таблицы.


Это сообщение отредактировал(а) loneybibi - 11.11.2012, 04:11


--------------------
Red Hat Fedora 17
Qt 4.8.1 (x64), GCC 4.4.3,
G++ 4.4.3, QtCreator 2.4.1
PM MAIL ICQ   Вверх
Alca
Дата 12.11.2012, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 2
Всего: 50



а что делать с QSqlTableModel ?

Вот сам проект: https://bitbucket.org/skynowa/iteacher/src

Это сообщение отредактировал(а) Alca - 12.11.2012, 00:17


--------------------
PM WWW ICQ Skype Jabber   Вверх
loneybibi
Дата 12.11.2012, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 28.5.2010
Где: Донецк (Украина)

Репутация: 3
Всего: 3



Цитата(Alca @ 11.11.2012,  23:13)
а что делать с QSqlTableModel ?

Вот сам проект: https://bitbucket.org/skynowa/iteacher/src

для того что бы отображать вместо bool значения checkbox нужно создать делегат и установить его для таблицы! трогать модель вообще не нужно!

могу дать пример простого делегата с текстом, другие я не делал, но примеров встроенных в Qt много, посмотрите!
Код

class mDelegate:public QStyledItemDelegate{
    Q_OBJECT
public:
    mDelegate(QWidget *parent=0):QStyledItemDelegate(parent){}

    QString displayText(const QVariant &value, const QLocale &locale) const{
        QString mytxt="MY TEXT";
        return mytext;
    }
};


Использовать так:
Код

ui->tableView->setItemDelegateForColumn(9,new mDelegate);


Используйте класс QStyledItemDelegate! у этого класса просто переопределяются события состояний когда он находиться
в режиме простого отображения и редактирования, вместо них подставляете свои виджеты.

По этому поводу очень много документации на русском языке.


Это сообщение отредактировал(а) loneybibi - 12.11.2012, 01:23


--------------------
Red Hat Fedora 17
Qt 4.8.1 (x64), GCC 4.4.3,
G++ 4.4.3, QtCreator 2.4.1
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0403 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.