データベースから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ではないため、色が変化しないように見えます。
それで、私は本当にこれをどのように行うべきですか?