1

QSortFilterProxyModel (任意の順序で) を介して特定の列を非表示/削除している QTableView 内に保存された列幅を維持する標準的な方法は何ですか? 単一のインスタンス内でそれらを非表示および非表示にすることについて話していることに注意してください。

私はそれを実現するためにいくつかの方法(すべて醜い)を試しました。確かに私は何か間違ったことをしています。

QHeaderView::saveState() と QHeaderView::restoreState() を見てきましたが、何か不足していない限り、これはシャットダウンから開始までの保存にのみ適しています。列が別の順序で非表示および非表示にされると、これは壊れます。

QSortFilterProxyModel は、filterAcceptsColumn() を使用して正常に動作します。注意点は、以前に false を返した列に対して filterAcceptsColumn() が true を返す場合です。invalidateFilter() を実行すると、QTableView に描画されます。ただし、 QTableView は、 QSortFilterProxyModel が列を非表示にする前の幅ではなく、列幅にデフォルト値 (100 のようです) を使用しています。

アイデア?

4

1 に答える 1

0

はい、setSectionHidden()代わりに使用します。

一般に、ビューに関連するコード (実行時の列の表示/非表示など) をモデルから除外するようにしてください。私たちのアプリケーションには と のサブクラスがQTableViewありQHeaderView、ユーザーはコンテキスト メニューを使用して列を表示/非表示にできます。列幅 (および位置) は、それらを表示/非表示にするときに変更されません。

filterAcceptsColumn主キー、外部キーなどの列を完全に無効にするために使用できます。

于 2013-03-27T08:45:14.157 に答える