Qt之自定义QStringListModel设置背景色和前景色

一.效果

Qt之自定义QStringListModel设置背景色和前景色_第1张图片
二.实现

QStringListModel里只实现了Qt::EditRole和Qt::DisplayRole,不能直接设置背景色和前景色,所以我们要继承QStringListModel,重写其中的data和setData方法,使其支持Qt::ForegroundRole和Qt::BackgroundRole。

QHStringListModel.h

#ifndef QHSTRINGLISTMODEL_H
#define QHSTRINGLISTMODEL_H

#include 
#include 

class QHStringListModel : public QStringListModel
{
public:
    explicit QHStringListModel(QObject *parent = nullptr);

    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
    bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;

    void clear();

private:
    QMap m_foregroundColorMap;
    QMap m_backgroundColorMap;
};

#endif 

你可能感兴趣的:(Qt工作笔记,qt,ListModel,前景色,背景色,QListView)