Название: получить данные, переопределив QSqlTableModel::data() Отправлено: 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 для получения данных изнутри класса. Название: Re: получить данные, переопределив QSqlTableModel::data() Отправлено: ieroglif от Май 06, 2011, 12:09 уточню тему:
в базе данных есть два поля: текстовое и числовое. в таблице мне их надо выводить в одной ячейке в виде "текстчисло" к тому же число ещё и раскрашивать разными цветами =) для отображения такого элемента хочу поставить делегатом отображения QLabel и передавать туда html, формируемый моделью из двух полей базы. пишу свою модель, наследник от QSqlTableModel - и получаю косяк по получению оригинала данных. может я вообще изобретаю какой-то велосипед, который в Qt уже давно сделан? =) ткните тогда =) Название: Re: получить данные, переопределив QSqlTableModel::data() Отправлено: ieroglif от Май 06, 2011, 13:02 вариант решения найден:
я наследую свой model класс от QProxyModel плюсы: 1. разделение классов работы с бд, и классов, отображающих данные (GIU и CORE классы) 2. возможность внутри класса работать к объектом sql-модели как методами "проксируемая модель", так и "таблица sql" |