2016-04-01 12 views
0

私にはQWidgetというアプリケーションがあります。このQWidgetは、垂直方向のQSplitterを使用して2つの部分に分かれています。特定のアプリケーションのQTableViewに静的な行番号を表示するクエリ

2つの部分がある:左

  • QTreeWidget

  • QTableView右側

QTableViewで使用されるモデルはQAbstractTableModelから継承されます。

QTreeWidgetで行を選択すると、右側のQTableViewを更新する必要があります。 QtableViewは、行番号を昇順に表示し、1つの列にオブジェクト名を表示する必要があります。行番号を表示するには、垂直ヘッダーにQAbstractTablemodelのsetHeaderDataを使用しています。 この関数を使用する際に問題が発生しています。

問題
私はまた、オブジェクト名の列をソートするQSortFilterProxyModelを使用しています。私が直面している問題は、列の水平ヘッダーをクリックしてオブジェクト名を使用して列を並べ替え、その行を選択すると、垂直ヘッダーの行番号が変更されるという問題です。

オブジェクト名の列を並べ替える間に垂直方向の変更に行番号を表示する方法はありますか?

+0

これは解決策ではなく、すばやく簡単な修正です。垂直ヘッダーに数字だけが含まれていると仮定すると、並べ替え後に垂直ヘッダーをいつでもリセットできます。あるいは、変更があるたびに元の状態に復元するカスタム 'QHeaderView'を使用してください。チェックしたい信号は['QHeaderView :: sectionMoved(...)'](http://doc.qt.io/qt-4.8/qheaderview.html#sectionMoved) – Marcus

+0

例を挙げてください同じもののためのコード – Geek

答えて

0

私は同じ問題がありました。私の回避策: 2つのQTableViewをお互いに隣り合わせに設定してください。左のものはソートされていないモデルを使用します。右側のQTableViewは、ソートプロキシモデルを使用します。 行+1を返す(ソートされていない)モデルに列を追加します。 右の表のこの列を非表示にします。左側の表のこの列を除くすべてを非表示にします。 スペースを調整するだけで問題はありません。 右のテーブルがスクロールする場合は、そのイベントを右のテーブルに同期させる必要があります。

関連する問題