2016-08-05 38 views
0

我有一個QTreeView有5列。要求只擴展第一列,但所有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); 
      } 
    } 

但是這不能按預期的方式工作在第一列。儘管第一列延伸,但不像其他列那樣可調整/交互。因此我想爲第一列添加stretch + interactive。其餘的4列可能只是交互式的。 這可能嗎?

回答

2

按照documentationQHeaderView::ResizeMode,當模式已被設置爲QHeaderView::Stretch ...

大小不能由用戶或編程的改變。

所以,不,我不認爲有可能使用標準的API來實現你想要的。

你可以嘗試調整模式設置爲QHeaderView::Custom和任何覆蓋在QHeaderView的各種鼠標事件處理現有QHeaderView或通過創建自己的類從QHeaderView繼承和安裝它的一個實例安裝一個事件過濾器您通過QTreeView::setHeader查看。