2017-11-09 8 views
0

10列のQtableView(qt5.9)を使用しており、ユーザーがこれらの列のヘッダーをクリックしたときに2番目と3番目(一部のみ)の並べ替えを無効にします。QTableView一部の列の並べ替えを無効にする

  • は、私は、ヘッダーのクリックでに耳を傾け、その後、いくつかのappropraiteメソッドを呼び出すか、ソート拒否する必要があります任意の信号がある私のQtableViewが

  • ソートできるようにするためにsetsortingenabledフラグを使用します。

+0

あなたは[QSortFilterProxyModel](http://doc.qt.io/qt-4.8/qsortfilterproxymodel.html#details)を使用しようとしましたか? – Simon

+0

@simonはい私はQSortFilterProxyModelを試しましたが、私はそこで役に立つ便利なメソッドしか見ませんでした。また、ヘッダコールをクリックするとviewのsortbycolumが呼び出されました。QSortFilterProxyModelではどのような提案をソートできないのでしょうか? – mapuna

+0

ヘッダシグナル[sortIndicatorChanged] doc.qt.io/qt-4.8/qheaderview.html#sortIndicatorChanged) – Simon

答えて

0

ヘッダー信号sortIndicatorChangedを使用すると、現在のソートインジケータを復元できます。

例:

connect(m_poTableView->header(), &QHeaderView::sortIndicatorChanged, 
      this, &MyClass::HandleIndicatorChanged); 


    MyClass::HandleIndicatorChanged(int logicalIndex, Qt::SortOrder eSort) 
    { 
     if (logicalIndex != 0) 
     { 
      this->m_poTableView->horizontalHeader()->setSortIndicator(
       0, this->m_poTableView->model()->sortOrder()); 
     } 
    } 
+0

@mapunaこの質問にはもう助けが必要ですか? – Simon

関連する問題