Russian Qt Forum
Сентябрь 29, 2024, 12:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: получить данные, переопределив QSqlTableModel::data()  (Прочитано 3346 раз)
ieroglif
Гость
« : Май 06, 2011, 08:39 »

пишу свой класс для работы с БД.
одна и та же таблица в различных местах программы представляется по разному, поэтому решил написать своего наследника от QSqlTableModel, что бы он автоматом выдавал различное количество колонок в разных QTableView в зависимости от своего state (сам прописал, сам устанавливаю)
переопределил методы columnCount, headerData - всё работает нормально.
переписываю метод data и столкнулся с траблой: не могу вытащить реальные данные.
код return QSqlTableModel::data(index,role); (поведение по умолчанию) срабатывает отлично, а вот вытащить что угодно - не получается  Грустный пытаюсь воспользоваться QSqlTableModel::record(index.row()); , но постоянно получаю пустые QVariant внутри QSqlRecord::value(QString); - данных нету. это баг Qt? или это баг моего мозга? гугл показывает второе - много примеров на просторах интернета пользуются спокойно QSqlRecord для получения данных изнутри класса.
Записан
ieroglif
Гость
« Ответ #1 : Май 06, 2011, 12:09 »

уточню тему:
в базе данных есть два поля: текстовое и числовое. в таблице мне их надо выводить в одной ячейке в виде "текстчисло" к тому же число ещё и раскрашивать разными цветами =)
для отображения такого элемента хочу поставить делегатом отображения QLabel и передавать туда html, формируемый моделью из двух полей базы.
пишу свою модель, наследник от QSqlTableModel - и получаю косяк по получению оригинала данных.
может я вообще изобретаю какой-то велосипед, который в Qt уже давно сделан? =)
ткните тогда =)
Записан
ieroglif
Гость
« Ответ #2 : Май 06, 2011, 13:02 »

вариант решения найден:
я наследую свой model класс от QProxyModel
плюсы:
1. разделение классов работы с бд, и классов, отображающих данные (GIU и CORE классы)
2. возможность внутри класса работать к объектом sql-модели как методами "проксируемая модель", так и "таблица sql"
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.12 секунд. Запросов: 20.