Всем привет!
Есть БД sqlite, которая пишется некой программой. Эту БД читает приложение на Qt и отображает в QTableView. Один из столбцов таблицы содержит текст, который нужно превратить в цвет фона ячейки. Т.е. текст "true" в таблице отобразить монотонно зелёным фоном ячейки в QTableView, соответсвенно "false" - красным. Достаточно 2-х цветов, но может в будущем может что-то ещё добавиться.
Подскажите как это можно сделать?
зы. Желательно без написания собственной модели
[Решено] Qt: QSqlTableModel заменить текст на цвет в столбце (Например, в БД "true" отобразить зелёным в QTableView)
Модератор: Модераторы разделов
Re: [Решено] Qt: QSqlTableModel заменить текст на цвет в столбце
Смотрите в сторону setItemDelegateForColumn.
Re: [Решено] Qt: QSqlTableModel заменить текст на цвет в столбце
Осилил Уже не первый раз с этими моделями и делегейтами не могу справиться.
Делаю так:
В конструкторе класса окна с таблицей:
Но ни createEditor() ни одна другая перегруженная в ColorDelegate функция не вызывается (вставлены затычки qDebug)
Примеры взяты тут http://www.qtcentre.org/threads/23000-dele...-QSqlTableModel и тут http://www.youtube.com/watch?v=EJf-vZ6FQfc...ture=plpp_video
Делаю так:
Код: Выделить всё
class ColorDelegate : public QItemDelegate
{
Q_OBJECT
public:
explicit ColorDelegate(QObject *parent = 0);
QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;
void setEditorData(QWidget *editor, const QModelIndex &index) const;
void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const;
void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const;
signals:
public slots:
};
В конструкторе класса окна с таблицей:
Код: Выделить всё
ColorDelegate *delegate = new ColorDelegate(this);
ui->tableView->setItemDelegateForColumn(1, delegate);
Но ни createEditor() ни одна другая перегруженная в ColorDelegate функция не вызывается (вставлены затычки qDebug)
Примеры взяты тут http://www.qtcentre.org/threads/23000-dele...-QSqlTableModel и тут http://www.youtube.com/watch?v=EJf-vZ6FQfc...ture=plpp_video
Re: [Решено] Qt: QSqlTableModel заменить текст на цвет в столбце
createEditor() должна вызываться при двойном клике. Для фона нужно paint(). В общем приложил примерчик.
Спасибо сказали:
Re: [Решено] Qt: QSqlTableModel заменить текст на цвет в столбце
Nice То что надо, спасибо