Я изучаю Qt, и у меня есть некоторые трудности. я использовал QTableWidget и когда элемент получить двойной щелчок на изменение цвета строки:Qt QTableView row colow
for (int j = 0; j < ui->tableWidget->horizontalHeader()->count(); j++) {
ui->tableWidget->item(row, j)->setForeground(color);
}
Но теперь я использую QTableView, я создал QAbstractTableModel для этого и работают нормально. Я сделал некоторые фильтры с QSortFilterProxyModel и отлично работаю. Но у меня нет успеха в изменении цвета строки. Я уже пытался что-то вроде этого:
m_model.setData(m_model.index(1,2) , QColor(Qt::blue), Qt::BackgroundColorRole);
И не работают. В модели :: setData() Я написал несколько отладок, и он присоединяется к функции справа, но не меняет цвет.
bool MyModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
if (data(index, role) != value) {
qDebug() << index << value << role;
emit dataChanged(index, index, QVector<int>() << role);
return true;
}
return false;
}
отладочный вывод:
QModelIndex(1,2,0x0,MyModel(0x7fffffffe408)) QVariant(QColor, QColor(ARGB 1, 0, 0, 1)) 8
Qabstractitemmodel не сохраняет значения самостоятельно. Вам нужно сохранить выбор в свойстве setData() и вернуть цвет для соответствующего индекса в ваших данных() impl. –
Спасибо @FrankOsterfeld, я сделал это после вашего предложения :) –