IscanderChe08 вересня 2023 р. 07:12
Кастомная QAbstractListModel и цвет фона, цвет текста и шрифт
Добрый день.
Пытаюсь поменять в модели цвет фона и текста, а так же шрифт и его размер. Получаю для всех трёх ролей - Qt::FontRole, Qt::BackgroundRole и Qt::ForegroundRole - однотипную ошибку. Что-то похожее у меня уже было когда-то давно, но я забыл, в чём там было дело.
QVariant MyAbstractListModel::data(const QModelIndex& index, int role) const { if(!index.isValid()) return QVariant(); if(index.row() >= stringList.size()) return QVariant(); if(role == Qt::DisplayRole || role == Qt::EditRole) { QVariant value = QVariant::fromValue(stringList.at(index.row())); return value; } if(role == Qt::FontRole) { QFont font = QAbstractListModel::data(index, Qt::FontRole).value<QFont>(); font.setFamily("Courier"); font.setPointSize(10); return font; } if(role == Qt::BackgroundRole) { QBrush brush = QAbstractListModel::data(index, Qt::BackgroundRole).value<QBrush>(); QColor color("#293134"); brush.setColor(color); return brush; } if(role == Qt::ForegroundRole) { QBrush brush = QAbstractListModel::data(index, Qt::ForegroundRole).value<QBrush>(); QColor color("#e0e2e4"); brush.setColor(color); return brush; } return QVariant(); }
D:\workcopies\dev_qt2\SimpleCodeEditor\myabstractlistmodel.cpp:37: ошибка: undefined reference to `__imp__ZNK18QAbstractItemModel4dataERK11QModelIndexi'
P.S. Ругается, соот-но, на строки 17, 25, 33 по приведённому коду.
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.Вам це подобається? Поділіться в соціальних мережах!
Останні коментарі
ИМ
Django - Підручник 017. Налаштуйте сторінку входу до Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Игорь Максимов22 листопада 2024 р. 11:51
Evgenii Legotckoi31 жовтня 2024 р. 14:37
Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
Игорь Максимов05 жовтня 2024 р. 07:51
QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Тепер обговоріть на форумі
Дмитрий03 лютого 2025 р. 06:24
не запускается компьютер!!! Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
Нужно запретить перемещение только некоторых итемов, остальные перемещать можно. Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
OAuth2.0 через VK, получение email Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.
Evgenii Legotckoi24 червня 2024 р. 15:11
Я бы так сделал:
QVariant var = QAbstractListModel::data(index, Qt::ForegroundRole).value();
потом проверил var на тип - может в value ничего нет?
Обычно роли типа Qt::ForegroundRole надо реализовывать самому (прямо тут же в ::data), то сть создавать и отдавать QFont.
Поясните подробнее этот момент.
Когда я наследовался от QSqlTableModel, там такой код нормально работал.
Промотрите просто так : QVariant var = QAbstractListModel::data(index, Qt::ForegroundRole).value();
что в var?
Еще обратил внимание, что QAbstractListModel:: это же абстрактный класс. Похоже надо не абстрактный , а "реальный" типа QSqlTableModel .
Да, но не совсем. Решилось с помощью стайлшитов и setFont.
Спасибо за отлик!