Нужно создать делегат для столбца в таблице, который меняет цвет фона в ячейке по цветовой шкале от самого большого значения (тёмно-зелёный) до самого маленького (тёмно-красный). В Excel'e это выглядит так:
Я бы сделал так:
class Model : public QAbstractItemModel{
struct Item{
int value;
QColor color;
Item(int value = 0,
const QColor &color = QColor()):
value(value),
color(color),
{}
};
struct ToPointer{
Item* operator()(Item &item) const{
return &item;
}
};
struct LessValue{
bool operator()(Item *first, Item *second) const{
return first->value < second->value;
}
};
QVector<Item> _items;
void _updateColors(){
QVector<Item*> items(_items.size());
std::transform(_items.begin(), _items.end(), items, ToPointer());
std::sort(items.begin(), items.end(), LessValue());
for(int i = 0; i < items.size(); ++i){
items[i]->color = indexToColor(i);
}
QModelIndex topLeft = index(0, 0);
QModelIndex bottomRight = index(items.size(), 0);
}
public:
QVariant data(const QModelIndex & index, int role) const{
//...
if(role == Qt::BackgroundRole){
return QBrush(_items[index.row()].color);
}
//...
}
};
Данные и цвета хранятся в вместе, каждый раз когда данные в модели меняются нужно вызывать _updateColors()
, чтобы обновить цвета.
PS: Я не стал ломать голову над тем как реализовать метод indexToColor
. Это тема для отдельного вопроса.
Так а сам вопрос-то в чём? Нужно создавать делегат - создавай. Если нужно поменять цвет фона в ячейке таблицы, то это делается примерно так:
QTableWidgetItem *item = new QTableWidgetItem();
...
item->setText(QString::number(...));
ui->tableWidget->setItem(r, c, item);
// цвет ячейки надо менять после того, как ячейку установили
ui->tableWidget->item(r, c)->setBackground(QColor(...));
...
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Было задание найти корни уравнения методом хордКод выглядит следующим образом:
Всем доброго времени суток, помогите пожалуйста разобратьсяБыла некая структура:
I have a problem, I work with Bluetooth Low EnergyI do not know how to organize a device search (Scan)
Предусмотреть два варианта ввода элементов массива: ввод с клавиатуры и ввод через генерацию случайных чиселРешение должно использовать...