Версия для печати темы
Форум на CrossPlatform.RU _ Qt Модель/Представление _ Опциональные поля в TableView
Автор: bo0blik 20.10.2009, 18:56
Всем привет!
К примеру, у меня есть таблица из трех столбцов, третий необязательный.
Мне нужно вместо значения в ячейке, отображать в третем столбце статусы: пуста ли ячейка.
Большое спасибо.
Автор: SABROG 20.10.2009, 19:06
Отображай, Qt как раз позволяет отображать.
Автор: bo0blik 20.10.2009, 19:14
Возможно, я не очень доступно выразил свою проблему.
Опишу подробней, у меня есть sql-таблица, ее я загружаю в tableview через модель, и хотелось бы на автомате обрабатывать и отображать нужные элементы, не изменяя при это модель.
Модель Отображение
id name text id name text
1 test1 null 1 test1 Текст отсутвует
2 test2 ololo => 2 test2 Текст имеется
3 test3 null 3 test3 Текст отсутвует
4 test4 null 4 test4 Текст отсутвует
Автор: Litkevich Yuriy 20.10.2009, 20:05
А редактировать такую таблицу нужно?
Автор: bo0blik 20.10.2009, 20:18
Цитата(Litkevich Yuriy @ 20.10.2009, 20:05)
А редактировать такую таблицу нужно?
Да, но через отдельный диалог.
Автор: Litkevich Yuriy 20.10.2009, 21:09
Цитата(bo0blik @ 21.10.2009, 0:18)
Да, но через отдельный диалог.
тогда я бы использовал QSqlQueryModel, сформировал такой запрос, чтобы при не пустом (NULL) значении поля запрос возвращал бы один текст, а при пустом другой. (Оператор
case можно использовать)
положим табличка MYTABLE, такая:
id | name | status
1 | Vas'ka | good
2 | Miha | sleep
3 | crazy | NULL
тогда запрос такой:
SELECT id, name, (case when status = ISNULL then "text Absent" else "Text Presence" end) FROM MYTABLE
Автор: bo0blik 20.10.2009, 21:11
Litkevich Yuriy, а я и не знал что можно и такие запросы делать.
Но тем не мение такой метод не очень удобен, ибо могут возникнуть другие потребности, например иконка в ячейке, это уж таким запросом не уладишь.
Я думал что возможно в qt есть подобный обработчик отображения.
Автор: Litkevich Yuriy 20.10.2009, 21:13
См. моё сообщение (обновилось)
Автор: bo0blik 20.10.2009, 21:19
Цитата(Litkevich Yuriy @ 20.10.2009, 22:13)
См. моё сообщение (обновилось)
И мое тоже
Автор: MoPDoBoPoT 20.10.2009, 21:20
Цитата(bo0blik @ 20.10.2009, 22:11)
Я думал что возможно в qt есть подобный обработчик отображения.
Конечно можно. Отнаследоваться от QSqlQueryModel и переопределить метод data(const QModelIndex &item, int role) const
Автор: Litkevich Yuriy 20.10.2009, 21:26
Цитата(bo0blik @ 21.10.2009, 1:11)
Я думал что возможно в qt есть подобный обработчик отображения.
а как ты видишь работу? Может и можно только я не пойму конечную цель. Вариантов реализации может быть много.
Автор: bo0blik 21.10.2009, 3:22
Цитата(Litkevich Yuriy @ 20.10.2009, 22:26)
а как ты видишь работу? Может и можно только я не пойму конечную цель. Вариантов реализации может быть много.
Ну что-то вроде функции которая вешается, к примеру, на нужную колонку, в нее попадают данные, обрабатывают и выдаются нужные.
Автор: bo0blik 21.10.2009, 7:18
Решил с помощью QStyledItemDelegate
QString ImageStyle::displayText ( const QVariant & value, const QLocale & locale ) const
{
if(value.toString().isEmpty())
return "Нет картинки";
else
return "Есть картинка";
}
Довольно удобно, но как иконку добавить к надписи в данном случае?
Автор: Litkevich Yuriy 21.10.2009, 8:20
Цитата(bo0blik @ 21.10.2009, 11:18)
но как иконку добавить к надписи в данном случае?
Обрати внимание на таблицу в описании этого класса, а именно на строку:
Qt::DecorationRole | QIcon and QColor
Автор: bo0blik 21.10.2009, 10:46
Цитата(Litkevich Yuriy @ 21.10.2009, 8:20)
Обрати внимание на таблицу в описании этого класса, а именно на строку:
Qt::DecorationRole | QIcon and QColor
Да, да на таблицу я долго медитировал, но так и не понял как с этим свойством работать?
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)