2017-04-14 56 views
0

我將QTreeWidget放入QVBoxLayout中。QTreeWidget(或QTableWidget)的自動生成

self._tree = QTreeWidget() 
layout = QVBoxLayout() 
layout.addWidget(self._some_other_widget) 
layout.addWidget(self._tree) 
layout.addStretch() 
self.setLayout(layout) 

此樹構件中的所有節點總是展開。 我想用最小高度創建此樹部件(例如,對於一行/項)。當添加新項目時,此樹窗口小部件也會增長以顯示所有項目。如何才能做到這一點?先謝謝你。

+1

您是否嘗試過['self._tree.setSizeAdjustPolicy(QAbstractScrollArea.AdjustToContents)'](http://doc.qt.io/qt -5/qabstractscrollarea.html#sizeAdjustPolicy螺旋槳)? –

回答

0

至少有兩種解決方案:

  1. 使用self._tree.setSizeAdjustPolicy(QAbstractScrollArea.AdjustToC‌​ontents)。謝謝你,G.M.

  2. 我還發現另一種解決方案:

    def sizeHint(self): 
        return self._sizeHint() 
    
    def minimumSizeHint(self): 
        return self._sizeHint() 
    
    def _sizeHint(self): 
        sh = super().sizeHint() 
        if self._item_count > 0: 
         return QSize(sh.width(), self.sizeHintForRow(0) * self._item_count) 
        else: 
         return QSize(sh.width(), 40)