qt中tableview单元格颜色的相关设置

来源:http://www.cppblog.com/biao/archive/2009/05/18/83292.html

In order to change the color of the items in the model you need to reimplement the data function and return the colors you want for theQt::BackgroundColorRole or the Qt::TextColorRole roles. See the documentation:

http://doc.trolltech.com/4.3/qabstractitemmodel.html#data

http://doc.trolltech.com/4.3/qt.html#ItemDataRole-enum

The example below demonstrates how this can be achieved.

Note that you can also reimplement the QItemDelegate::paint() in order to change the color the items in a view. See the following FAQ:

http://trolltech.com/developer/knowledgebase/faq.2007-11-21.7774969370/

#include <QtGui>

class ColorModel : public QAbstractTableModel
{
public:
    ColorModel(QObject *parent) 
    {
        QStringList firstRow;
        QStringList secondRow;

        for (int i = 0; i < 5; i++ ) {
            firstRow.insert(i,"Row " + QString::number(i+1));
        }
        for (int i = 0; i < 5; i++ ) {
            secondRow.insert(i,"Row " + QString::number(i+1));
        }

        stringList << firstRow << secondRow;
    }

    // Returns the number of rows
    int rowCount ( const QModelIndex & parent = QModelIndex() ) const
    {
        return 2;
    }

    // Returns the number of columns

    int columnCount ( const QModelIndex & parent = QModelIndex() ) const
    {
        return 5;
    }

    // Returns an appropriate value for the requested data.
    // If the view requests an invalid index or if the role is not
    // Qt::DisplayRole, Qt::BackgroundColorRole or QTextColorRole, an invalid variant is returned.
    // Any valid index that corresponds to a string for the index's column and row in
    // the stringlist is returned for the Qt::DisplayRole

    QVariant data ( const QModelIndex & index, int role = Qt::DisplayRole ) const 
    {
        if (!index.isValid())
            return QVariant();

        if (role == Qt::BackgroundRole) {
            if (index.row() == 0)
                return QColor(Qt::blue);
            else
                return QColor(Qt::white);
        } else if (role == Qt::DisplayRole) {
            QStringList list = (QStringList)stringList.at(index.row());
            return list.at(index.column());
        } else if (role == Qt::ForegroundRole ) {
            if (index.row() == 1)
                return QColor(Qt::red);
        } 

        return QVariant();
    }

private: 
    // Each row will consist of a list of strings
    QList<QStringList>stringList;
};

int main(int argc, char **argv)
{
    QApplication app(argc, argv);
    QWidget widget;

    QHBoxLayout *layout = new QHBoxLayout(&widget);
    QTreeView *treeView = new QTreeView(&widget);
    QTableView *tableView = new QTableView(&widget);
    ColorModel *model = new ColorModel(tableView);
    tableView->setModel(model);
    treeView->setModel(model);
    layout->addWidget(treeView);
    layout->addWidget(tableView);
    widget.show();
    return app.exec(); 
}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值