Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Опциональные поля в TableView
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Модель/Представление
bo0blik
Всем привет!

К примеру, у меня есть таблица из трех столбцов, третий необязательный.

Мне нужно вместо значения в ячейке, отображать в третем столбце статусы: пуста ли ячейка.

Большое спасибо.
SABROG
Отображай, Qt как раз позволяет отображать.
bo0blik
Возможно, я не очень доступно выразил свою проблему.

Опишу подробней, у меня есть 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
А редактировать такую таблицу нужно?
bo0blik
Цитата(Litkevich Yuriy @ 20.10.2009, 20:05) *
А редактировать такую таблицу нужно?


Да, но через отдельный диалог.
Litkevich Yuriy
Цитата(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
Litkevich Yuriy, а я и не знал что можно и такие запросы делать.

Но тем не мение такой метод не очень удобен, ибо могут возникнуть другие потребности, например иконка в ячейке, это уж таким запросом не уладишь.

Я думал что возможно в qt есть подобный обработчик отображения.
Litkevich Yuriy
См. моё сообщение (обновилось)
bo0blik
Цитата(Litkevich Yuriy @ 20.10.2009, 22:13) *
См. моё сообщение (обновилось)


И мое тоже :)
MoPDoBoPoT
Цитата(bo0blik @ 20.10.2009, 22:11) *
Я думал что возможно в qt есть подобный обработчик отображения.

Конечно можно. Отнаследоваться от QSqlQueryModel и переопределить метод data(const QModelIndex &item, int role) const
Litkevich Yuriy
Цитата(bo0blik @ 21.10.2009, 1:11) *
Я думал что возможно в qt есть подобный обработчик отображения.
а как ты видишь работу? Может и можно только я не пойму конечную цель. Вариантов реализации может быть много.
bo0blik
Цитата(Litkevich Yuriy @ 20.10.2009, 22:26) *
а как ты видишь работу? Может и можно только я не пойму конечную цель. Вариантов реализации может быть много.


Ну что-то вроде функции которая вешается, к примеру, на нужную колонку, в нее попадают данные, обрабатывают и выдаются нужные.
bo0blik
Решил с помощью QStyledItemDelegate

QString ImageStyle::displayText ( const QVariant & value, const QLocale & locale ) const
{
    if(value.toString().isEmpty())
        return "Нет картинки";
    else
        return "Есть картинка";
}


Довольно удобно, но как иконку добавить к надписи в данном случае?
Litkevich Yuriy
Цитата(bo0blik @ 21.10.2009, 11:18) *
но как иконку добавить к надписи в данном случае?
Обрати внимание на таблицу в описании этого класса, а именно на строку:
Qt::DecorationRole | QIcon and QColor
bo0blik
Цитата(Litkevich Yuriy @ 21.10.2009, 8:20) *
Обрати внимание на таблицу в описании этого класса, а именно на строку:
Qt::DecorationRole | QIcon and QColor


Да, да на таблицу я долго медитировал, но так и не понял как с этим свойством работать?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2021 IPS, Inc.