Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > QSqlQueryModel дополнительная колонка.


Автор: dix75 21.8.2012, 15:28
Добрый день!

Имеется следующий кусок кода.
Код

QTreeView* view = new QTreeView;
QSqlQueryModel* model = new QSqlQueryModel(this);
 model->setQuery("SELECT first, second FROM Set );
 model->setHeaderData(1, Qt::Horizontal, tr("First"));
 model->setHeaderData(2, Qt::Horizontal, tr("Second"));


Мне необходимо выводить в первой колонке QCheckBox который выглядит одинаково для всех ячеек и не зависит от Базы данных 
Как это сделать?
 Переопределение виртуальных методов из QSqlQueryModel позволит это сделать или все-таки необходимо переопределять QAbstractTableModel?

Автор: math64 22.8.2012, 07:57
Определяешь делегата для этой колонки. Он будет выводит CheckBox. Только откуда он будет брать данные поставить галочку или нет ? (например, можно в таблице задать дополнительное поле, где хранить эту информацию, а QSqlQueryModel спрятать его)

Добавлено через 2 минуты
QSqlQueryModel - это модель для таблицы. Зачем нужно дерево?

Автор: dix75 22.8.2012, 13:51
Цитата(math64 @  22.8.2012,  07:57 Найти цитируемый пост)
Только откуда он будет брать данные поставить галочку или нет ?

Всегда галочки будут не выбраны.

Добавлено @ 13:52
Цитата(math64 @  22.8.2012,  07:57 Найти цитируемый пост)
Определяешь делегата для этой колонки. 

Нет данных для этой колонки, они просто не нужны. С делегатом понятно, только для него нужны данные их нет.

Автор: dix75 22.8.2012, 14:07
math64, 
Проще  сказать, что мне нужно выводить данные не с 0 колонки, а с 1. А 0 оставить нетронутой 

Автор: math64 22.8.2012, 14:25
Добавить колонку проще всего так: 
Код

SELECT FALSE, first, second FROM Set

+ делегатом заменять вывод колонки на нужный.

посложнее - использовать прокси (придётся писать свой).

Автор: dix75 22.8.2012, 14:34
Цитата(math64 @  22.8.2012,  14:25 Найти цитируемый пост)
SELECT FALSE, first, second FROM Set

Это похоже на хак. и после определенного времени явно забудиться.

Автор: borisbn 23.8.2012, 11:26
Цитата(dix75 @  22.8.2012,  14:34 Найти цитируемый пост)
Это похоже на хак.

Почему это ? Вполне себе нормальная и часто используемая конструкция

Автор: dix75 24.8.2012, 22:08
Цитата(borisbn @  23.8.2012,  11:26 Найти цитируемый пост)
Почему это ? Вполне себе нормальная и часто используемая конструкция

К тому же не рабочая

Автор: borisbn 25.8.2012, 09:50
Возможно, твоя СУБД не понимает FALSE. Знамени его на 0

Автор: math64 26.8.2012, 09:56
Или NULL. Возможно нужно 'FALSE' - поскольку в колонке будет чекбокс, я и придложил булевский тип.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)