1

アロハ

現在 ComboboxDelegate (QItemDelegate のサブクラス) を使用してユーザーにオプションを提示している 2 つの列を持つ QTableWidget があります。現在の行のみで、最初の列の選択が 2 番目の列で使用可能なオプションに影響するようにしたいと思います。

たとえば、最初の列に車のリストがあり、2 番目の列にその車で利用できる色のリストがあります。他の行では、さまざまな車が選択されているため、さまざまな色の選択肢が利用可能です。

私が見る限り、行または列ごとに項目デリゲートしか設定できないため、他のすべての行に影響を与えずに 2 番目の列のデリゲートのオプションを変更する方法がわかりません。

これは可能ですか?この QTableWidget を既に見ているコードがかなりあるので、完全なビュー/モデルの分離を避けたいと思います (そして、時間のプレッシャーにさらされています)。

4

1 に答える 1

0

興味のある方はどうぞ。QTableWidget::setItemWidget() を使用して各セルにコンボボックス ウィジェットを提供するというデリゲート前のアプローチに戻りました。

qcombobox をサブクラス化してテーブルへの参照を取得し、コンボボックス CurrentIndexChanged をスロットに接続してテーブル データを更新しました。(セルにウィジェットを設定しても、これを行わない限り、テーブルウィジェットのデータには影響しません)。

このような完全なコンボボックスを使用すると、itemdelegate よりもコストがかかりますが、私のテーブルは非常に小さいので、問題なく使用できます。コンボボックスのレンダリングは、デリゲートほどきれいではありません (コンボボックスは、デリゲートの場合、編集中だけではなく、常に表示されます)、時間が経つにつれて、これを改善できると確信しています。

于 2013-10-10T14:24:24.853 に答える