QTableView设置某行或某列的背景色
QTableView设置某行或某列的背景色
QT5.15.2
.h
#include <QStyledItemDelegate>
#include <QPainter>
class RowColorDelegate : public QStyledItemDelegate {
public:
RowColorDelegate(QColor color, QObject* parent = nullptr)
: QStyledItemDelegate(parent), m_color(color) {}
void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override;
~RowColorDelegate();
private:
QColor m_color;
};
.cpp
#include "RowColorDelegate.h"
#include <qapplication.h>
void RowColorDelegate:: paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const {
QStyledItemDelegate::paint(painter, option, index);
//if (option.state.testFlag(QStyle::State_Enabled)) {
// // 设置行的颜色
// painter->fillRect(option.rect, m_color);
//}
QStyleOptionViewItem opt = option;
initStyleOption(&opt, index);
painter->fillRect(option.rect, m_color);// QBrush(QColor(0, 238, 101)));//这块为写背景的代码
QStyle* style = opt.widget ? opt.widget->style() : QApplication::style();
style->drawControl(QStyle::CE_ItemViewItem, &opt, painter, opt.widget);
//qDebug() << "txw paint" << index.row();
}
RowColorDelegate::~RowColorDelegate()
{}
使用方法:
QSqlQueryModel* sql_model;
sql_model = new QSqlQueryModel(this);
sql_model->setQuery("select * from dxxtb_mtoxve_loxt_tab");
查询数据后
mainwindows.cpp里面
// 设置代理,这里假设我们要设置第二行的颜色为
RowColorDelegate* delegate = new RowColorDelegate(Qt::gray, ui.tableView_database);
for(int i=0;i< sql_model->rowCount();i++)
{
if (i % 2 == 1)
{
ui.tableView_database->setItemDelegateForRow(i, delegate); // 设置第二行使用自定义代理
}
}
原文地址:https://blog.csdn.net/txwtech/article/details/144290654
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!