c++ - Qtで、モデルからリストビューのアイテムの背景色をリセットするにはどうすればよいですか?

原文 c++ qt

Qtには、表示するデータを含むカスタムモデルクラスを使用しているQListViewがあります。データに基づいて、背景(および最終的には前景/テキスト)の色をデータの状態に一致するように設定します。

これまでのところ、次のように、QBrushメソッド内のQColorQVariantの内部で、選択されたQt::BackgroundRoleを含むQAbstractListModel::data()を返すことでこれを実現しています。

QVariant CustomListModel::data(const QModelIndex& index, int role) const
{
  Item& item = findItem(index);
  if (item)
  {
    // ...
    if (role == Qt::BackgroundRole)
    {
      return QVariant(QBrush(item.color()));
    }
    // ...
  }
}


私が抱えている問題は、アイテムの状態が「中立」になったときに色をウィジェットのデフォルトの背景色にリセットできるようにしたいのですが、これを行うための正しい指示を見つけることができませんでした。これを達成するための標準的な方法は何ですか?
答え
あなたのデータメソッドでこのようなことを試してください:

if (role == Qt::BackgroundRole)
{
    bool itemStateIsNeutral = ...

    if (itemStateIsNeutral) return QVariant();
    // else:

    return QVariant(QBrush(item.color()));
}


代わりにQVariant(QBrush())を返す必要があるかもしれませんが、これについてはよくわかりません。
関連記事

c++ - 実装ファイルでコンストラクタを使用するにはどうすればよいですか?

c++ - cursesライブラリーの使用時にmove()またはwmove()を使用するとカーソルが移動しない

c++ - プログラムでシステム情報を開く

c++ - Boost::Spiritを使用してエスケープされた文字列を解析する

java - 乱数をテストする[終了]

c++ - Qt CreatorとGCC

c++ - DLLが機能しない

c++ - Win32のアニメーションとイベントの質問(C++)

c++ - SWIGでSFMLクロスプラットフォームのtypedefを取得する

c++ - Webブラウザーを介してカメラから取得した画像を取得するにはどうすればよいですか?