私はQtを学習していますが、いくつかの難しさがあります。 私はQTableWidgetを使用していた項目は、ダブルクリックし、変更行の色受け取るとき:Qt QTableViewの行のコウ
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);
と動作しない: 私はすでにこのようなものを試してみました。 model :: 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に選択肢を格納し、data()implの対応するインデックスの色を返す必要があります。 –
@FrankOsterfeldありがとう、私はあなたの提案後にそれを作った:) –