textcolor
我对本质上的更改做了以下更改QSqlTableModel
,子类化CustomSqlTableModel
以允许覆盖setData()
和提交,并添加自定义刷新功能。对于QAbstractItemModel
实例,以下内容应该相同:
QVariant ExampleSqlTableModel::data(const QModelIndex &idx, int role) const
{
if (role == Qt::ForegroundRole)
{
QColor color;
// Only the display names need to be coloured.
if(idx.column() == 1)
{
int value = CustomSqlTableModel::data(1, Qt::DisplayRole).toInt();
switch(value)
{
case 0: color = QColor(Qt::yellow); break;
case 1: // same as 2
case 2: color = QColor(Qt::blue); break;
case 3: color = QColor(Qt::green); break;
case 4: // same as 5
case 5: color = QColor(Qt::red); break;
default: color = QColor(Qt::black); break;
}
}
return QVariant(color);
}
return CustomSqlTableModel::data(idx,role);
}
我还建议对您的小部件进行更具体的处理。QTableView
子类化您确实希望影响的所有实例,如果它会影响文本颜色stylesheet
,请不要对其应用一般性。stylesheet
QTableView
这样,如果所有其他QTableViews
都被归类为 be myAwesomeTableView
,那么您可以将您的stylesheet
内容替换为:
myAwesomeTableView::item
{
padding-left:10px;
height:40px;
width:80px;
color: #5a5a5a;
border-bottom :1px solid #f0f0f0;
}
如果你总是希望另一个QTableView
有红色文本,而是定义第二个子类,并通过处理它stylesheet
而不是像我那样在代码中实现它。根据该列中的值,我需要不同的行在单个列上具有不同的文本颜色。要通过 执行此操作,请为参数stylesheet
创建另一个子类,并按如下方式实现:QTableView
myOtherAwesomeTableView
stylesheet
myOtherAwesomeTableView::item
{
padding-left:10px;
height:40px;
width:80px;
color: #ff0000;
border-bottom :1px solid #f0f0f0;
}
让我知道这是否对您有帮助...