Название: QTableView, QSqlQueryModel раскрашиваем... Отправлено: Sergey B. от Январь 24, 2007, 01:59 Никто не сталкивался с такой задачей?
Есть QTableView, отображающий QSqlQueryModel, и в зависимости от данных в каждой строке определённой колонки, нужно раскрасить строку QTableView в определённый цвет... Вроде задача нужная, так как визуальности придаёт на 5+. Название: QTableView, QSqlQueryModel раскрашиваем... Отправлено: Alexei от Январь 24, 2007, 08:03 Нужно использовать делегаты
Название: QTableView, QSqlQueryModel раскрашиваем... Отправлено: nova от Январь 24, 2007, 20:44 А есть пример с хорошо переопределенным методом paint()?
Название: QTableView, QSqlQueryModel раскрашиваем... Отправлено: Sergey B. от Январь 29, 2007, 06:38 Цитата: "Alexei" Нужно использовать делегаты А делегат позволит проанализировать несколько ячеек и в зависимости от разницы между ними закрасиь строку в нужный цвет? Название: QTableView, QSqlQueryModel раскрашиваем... Отправлено: burunduk от Январь 29, 2007, 15:36 а без делегатов с помощью ролей никак нельзя ?
Название: QTableView, QSqlQueryModel раскрашиваем... Отправлено: crocus от Январь 30, 2007, 13:51 Короче запарился в одного тупить 6 часов к ряду:
Код:
В общем раскрашивает при выделении, за код не пинайте, доработайте кто-нибудь, чтоб ракрашивало при инициализации модели. Полагаю как-то надо проиндексировать все строки, скажем в заданном столбце, но как? уже совсем не понимаю. P.S: model - QSqlTableModel. Название: QTableView, QSqlQueryModel раскрашиваем... Отправлено: burunduk от Январь 30, 2007, 14:01 я вот так у себя раскрашиваю:
Код:
Название: QTableView, QSqlQueryModel раскрашиваем... Отправлено: crocus от Январь 31, 2007, 03:20 А как и где вызываешь функцию?
Название: QTableView, QSqlQueryModel раскрашиваем... Отправлено: burunduk от Январь 31, 2007, 10:18 Эта ф-ция замещается в переопределённом классе модели
Код:
Название: QTableView, QSqlQueryModel раскрашиваем... Отправлено: crocus от Январь 31, 2007, 12:35 Благодарю!
Название: QTableView, QSqlQueryModel раскрашиваем... Отправлено: Sergey B. от Февраль 02, 2007, 18:28 Цитата: "burunduk" я вот так у себя раскрашиваю: Код:
А нет примера, чтоб при выделении строки, она зелёным покрывалась? :) Какие-то флаги проверить? А то что то туплю уже... найти не могу... Название: QTableView, QSqlQueryModel раскрашиваем... Отправлено: crocus от Февраль 03, 2007, 04:18 Посмотри внимательнее - в варианте burundukа идет переопределение модели
QSqlQueryModel, т.е. раскраска происходит при инициализации (получении данных)-я так понимаю это конечно: Код:
т.к. модель создана. А в моем варианте работает через QItemDelegate и и при сигналах модели или tableView->selectionModel() можешь подключить любой слот и colorRows в том числе, а можно даже комбинировать. В приведенном коде при выделении строки ячейка 6 -закрашивается красным , 10 -синим, а остальные желтым, зеленая на базе MSqlQueryModel и не забудь про enum QAbstractItemView::SelectionBehavior (http://source.foliant.net.ru/screen.png) Но зеленые почему-то при клике не меняют цвет?? Название: QTableView, QSqlQueryModel раскрашиваем... Отправлено: Sergey B. от Февраль 04, 2007, 09:12 Цитата: "crocus" Посмотри внимательнее - в варианте burundukа идет переопределение модели QSqlQueryModel, т.е. раскраска происходит при инициализации (получении данных)-я так понимаю это конечно: Код:
т.к. модель создана. А в моем варианте работает через QItemDelegate и и при сигналах модели или tableView->selectionModel() можешь подключить любой слот и colorRows в том числе, а можно даже комбинировать. В приведенном коде при выделении строки ячейка 6 -закрашивается красным , 10 -синим, а остальные желтым, зеленая на базе MSqlQueryModel и не забудь про enum QAbstractItemView::SelectionBehavior Но зеленые почему-то при клике не меняют цвет?? У меня есть модель (QSqlQueryModel), так вот, сделав по примеру burundukа, всё работает. Смысл таков что если дата текущяя, больше содержащейся в ячейке Код: QDate tempdate = record(index.row()).value(3).toDate(); то даём Код: return QVariant(QColor(Qt::red)); Но самое интересное, если запустить прогу, открыть окно (модальное) и менять дату в винде, при переходе к программе строка закрашивается... Может есть роль какая-то... Что типа, как пример: Код: if(record.selected() ) return QVariant(QColor(Qt::gree)); Название: Re: QTableView, QSqlQueryModel раскрашиваем... Отправлено: BELNETMON от Апрель 23, 2009, 16:09 Что-то вариант с перекрытием модели не очень корректно срабатывает на доступе к данным.
Задача: хочется получить значение поля из роли, допустим "цвет фона". Проанализировать, и выбрать цвет В таком случае, как указывается выше, мы обращаемся к рекорду "...record(index.row()).value(3).toDouble();.." У меня в таком случае возвращается значение явно не связанное с текущей ячейков. То есть поле по индексу или имени определяется правильно, а вот значение - нет. То же самое можно проверить, допустим, реализуя роль Qt::DisplayRole, пытаясь проанализировать какое-либо другое поле. То же самое, возвращает не то что надо. QT 4.5+QTCreator1.1rc1+SQLite Код: QVariant MyTableModel::data(const QModelIndex &index, int role) const Может кто сталкивался? Название: Re: QTableView, QSqlQueryModel раскрашиваем... Отправлено: Rigat от Июнь 01, 2012, 00:35 я вот так у себя раскрашиваю: У меня этот вариант выдает ошибки:Код: QVariant MSqlQueryModel::data(const QModelIndex &index, int role) const { error: invalid use of incomplete type 'struct QSqlRecord' error: forward declaration of 'struct QSqlRecord' Название: Re: QTableView, QSqlQueryModel раскрашиваем... Отправлено: Serr500 от Июнь 01, 2012, 08:17 Код: #include <QSqlRecord> P.S. Кода же вы все начнёте думать? >:( Название: Re: QTableView, QSqlQueryModel раскрашиваем... Отправлено: sergun1604 от Июль 05, 2012, 15:20 Цитировать Эта ф-ция замещается в переопределённом классе модели Код: class MSqlQueryModel : public QSqlDataModel { QVariant data(const QModelIndex &index, int role) const; }; Подскажите пожалуйста а где это написать и как переопределить класс? не пойму... |