gpt4 book ai didi

c++ - QT QSqlTableModel - 给定数据列中的背景颜色

转载 作者:行者123 更新时间:2023-11-28 02:54:42 27 4
gpt4 key购买 nike

我有一个 tableView 示例:

enter image description here

比如当数据列状态为S时。表格的背景颜色为绿色,when N 为红色。

我想要的例子:

enter image description here

我的代码:

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
//Con Db...

model = new QSqlTableModel(this);
model->setTable("app");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();
model->setHeaderData(0, Qt::Horizontal, tr("number"));
model->setHeaderData(1, Qt::Horizontal, tr("status"));
ui->tableView->setModel(model);
}

有人可以帮助我吗?

最佳答案

重新实现,即子类 QSqlTableModel 并提供数据函数的实现,如下所示。请注意,MySubClassedSqlTableModel 实现需要放置在经过 MOC 处理(通常自动完成)的头文件中。

  #include <QSqlTableModel>
class MySubClassedSqlTableModel : public QSqlTableModel
{
Q_OBJECT
public:
MySubClassedSqlTableModel(QObject * parent = 0, QSqlDatabase db = QSqlDatabase())
: QSqlTableModel(parent,db) {;}
QVariant data ( const QModelIndex & index, int role = Qt::DisplayRole ) const
{
if(role==Qt::BackgroundColorRole)
{
const QVariant value(data(index,Qt::DisplayRole));
return QVariant(QColor(value.toString()=="S"?Qt::green:Qt::red));
}
return QSqlTableModel::data(index,role);
}
};

model = new MySubClassedSqlTableModel(this); //<==== use your model
model->setTable("app");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();
model->setHeaderData(0, Qt::Horizontal, tr("number"));
model->setHeaderData(1, Qt::Horizontal, tr("status"));
ui->tableView->setModel(model);

顺便说一句,在大多数情况下,当您想要自定义行为时,您需要进行子类化。

关于c++ - QT QSqlTableModel - 给定数据列中的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22273260/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com