Я пытаюсь установить цвет фона элемента QTableView, перезаписывая метод данных для Qt :: BackgroundRole.
Это работает без таблицы стилей .
Нос qss, где я устанавливаю свойство границы QTableView :: item, оно не работает.
Мне нужны некоторые QTableViews с общей таблицей стилей и один QTableView с измененным цветом фона в Qt :: DisplayRole.
Но без успеха.
MyProxyModel наследует от QStandardItemModel
class MyProxyModel : public QStandardItemModel
{
public:
MyProxyModel(int in_row, int in_col);
QVariant data(const QModelIndex &in_index, int in_role) const override;
};
А потом я перезаписываю метод данных
QVariant MyProxyModel::data(const QModelIndex &in_index, int in_role) const
{
if(Qt::BackgroundRole == in_role)
{
int tmp = QStandardItemModel::data(in_index, Qt::DisplayRole).toInt();
switch (tmp)
{
case 1:
return QVariant(QColor(0xBB, 0xFF, 0x99));
break;
...
default:
break;
}
}
return QStandardItemModel::data(in_index, in_role);
}
Он работает без таблицы стилей.
Но с таблицей стилей это небез работы.
/*------------------------------------------*/
/*default*/
QTableView
{
border: 1px solid #cccccc;
background: #f3f3f3;
color: #252424;
font-family: "Segoe UI";
outline: 0;
}
QTableView::item
{
/* border-bottom: 1px solid #cccccc; */ /* causes the bug */
}
/*------------------------------------------*/
/*second view*/
QTableView#SecondView
{
background: #99dd99;
border: 1px solid #cccccc;
color: #252424;
font-family: "Segoe UI";
outline: 0;
}
QTableView#SecondView::item
{
/* border: 0; */ /* causes the bug too */
}