2016-08-05 4 views
0

私は5つの列を持つQTreeViewを持っています。要件は、最初の列のみを引き伸ばすことであるが、すべての5列は、ユーザーによってサイズ変更可能でなければならない(つまり、相互作用も可能である)。だから私は、次のコードを書いた:QTreeView/QHeaderViewストレッチとインタラクティブ両方の最初の列のみをサイズ変更

int numCols = myModel->columnCount(); 
    for(int i=0;i<numCols;i++) 
    { 
     myQTreeView->resizeColumnToContents(i); 
     if(i==0) 
      {  
      myQTreeView->header()->setResizeMode(i,QHeaderView::Stretch); 
      } 
     else 
      { 
      myQTreeView->header()->setResizeMode(i,QHeaderView::Interactive); 
      } 
    } 

をしかし、第一列に予想されるように、これは動作しません。第1列は伸びますが、残りの列と同様にサイズ変更/対話はできません。したがって、第1列にstretch + interactiveを追加したいと思います。 4つの列の残りの部分はインタラクティブなものでもよい。 これは可能ですか?モードがQHeaderView::Stretchに設定されているQHeaderView::ResizeModeためdocumentationによれば

答えて

2

...

サイズは、ユーザまたはプログラムによって変更することができません。

私は、標準APIを使用してあなたが望むものを達成することはできないと思います。

あなたはQHeaderView::Customにサイズ変更モードを設定し、既存のQHeaderView上またはQHeaderViewから継承する独自のクラスを作成し、自分の中でのインスタンスをインストールすることで、イベントフィルタをインストールするのいずれかによってQHeaderViewに様々なマウスイベントハンドラをオーバーライドしてみてください経由で見るQTreeView::setHeader

関連する問題