3

QTableViewからサブクラス化した独自のモデルで実装した がありQAbstractTableModelます。行のフィールドの 1 つに特定の値がある場合、行の色を赤に変更できるようにしたいと考えています。setDataモデルを呼び出しQt::BackgroundRoleて背景色を変更するのが答えである例をたくさん見ました。をサブクラス化したので、AbstractTableModel再実装setDatadataたため、役割が であるデータのみを処理しているため、モデルの呼び出しsetDataは背景色の役割で何もしませんQt::DisplayRole

私の最初の質問は、役割全体の色を変更する簡単な方法はありますか? setDataそうでない場合は、その部分を実装し、その方法がわからない をdata処理する必要があると思います。これを行う方法の例があれば、非常に役立ちます...BackgroundRole

4

2 に答える 2

4

それは私が思っていたよりも簡単でした...私のデータメソッドで私はチェックを追加しました

if (role == Qt::BackgroundColorRole) 

そのifブロックで。値の比較を行って、それが色を変更する必要がある行であるかどうかを確認し、そうである場合は次を返します。

return QVariant(QColor(Qt::red));
于 2012-01-19T02:04:46.630 に答える
4

より良い答えは、このタスクにdelegateが提供するを使用し、にはまったく触れないことです。ビューを何色にするかについて、モデルが何かを知っている必要があるのはなぜですか? 複数のビューに異なる動作をさせたい場合はどうなりますか? 等。viewmodel

setColumnDelegate、またはsetRowDelegateその他の多くのメカニズムを使用できます。完全な答えについては、これらの関数を見てください。

于 2014-02-05T22:14:57.830 に答える