テーブルの特定の行と列のみを表示するカスタムQSortFilterProxyModelがあります。テーブルの特定の値をどのように描画するかを制御するカスタムQItemDelegateもあります。私はそれを必要とする列にデリゲートを適用しているだけです。問題は、プロキシモデルで特定の列を非表示にするとデリゲートが壊れてしまうようです。例えばQSortFilterProxyModelでカスタムQItemDelegateを使用する
、私は列AGを持っていると私は列F.
A B C D E F G
-------------------
o o o o o X o
o o o o o X o
o o o o o X o
に私のカスタムデリゲートを適用する私のプロキシモデルは、列Bが表示されない場合は、私の代理人ではなく、列Gに適用されてしまうと仮定。
A C D E F G
----------------
o o o o o X
o o o o o X
o o o o o X
私は
table->setColumnHidden(B, true);
を呼び出すことによって、ビュー上の代わりに、プロキシモデルで列を非表示にすることで問題を回避することができましたそして、私はそれが動作すると仮定しますが、唯一のことです溶液?デリゲートとプロキシのモデルクラスは、どちらか一方を同じモデルで使うのではなく、同じモデルでうまく使うことができるように、うまく機能しないというバグのようです。
私が知っている限り、期待どおりに動作しています。アイテムの代理人は、ビューの列に適用されます。ビューの列は、モデルには無関係です。また、モデル*はプロキシモデルなので、正しい列に適用されています。 – cbuchart
私はあなたが正しいと思う@cbuchart。ビューのsetItemDelegateForColumnを呼び出すと、モデルの列ではなく、ビューの列が指定されることになります。私は列番号を変更する可能性があるプロキシモデルを使用していることを知っている場合、あなたの提案された回答は有効な回避策になると思います。 – Moohasha
qobject_castを実行して、モデルがプロキシモデルであるかどうかを確認できます。 – cbuchart