我试图掌握如何将数据库中的数据显示到 Qt 表中。我想要做的是将布尔值上的显示值更改为“PASS”或“FAIL”,然后根据此更改行颜色。
我QSqlQueryModel
为模型创建了一个派生类并覆盖了函数:
QVariant TestResultsViewModel::data(const QModelIndex &index, int role) const
{
QVariant value = QSqlQueryModel::data(index, role);
if (value.isValid() && role == Qt::DisplayRole){
switch(index.column()){
case 0:
return value.toBool() ? "PASS" : "FAIL";
}
}
if (role == Qt::TextColorRole){
// Get column 0
QVariant pass = index.sibling(index.row(), 0).data();
if (pass.isValid()){
if (pass.toBool()){
return QVariant::fromValue(QColor(Qt::blue));
}
else{
return QVariant::fromValue(QColor(Qt::red));
}
}
}
return value;
}
但似乎发生的是第一部分首先完成,然后列的值是“PASS”或“FAIL”而不是 0、1,因此颜色不会改变。
那么我应该怎么做呢?