2013-02-24 16 views
5

Próbuję automatycznie zmienić rozmiar jego zawartości na QTreeView. To jest moja konfiguracja: próbuję utworzyć "inteligentną" końcówkę narzędzia, która jest QWidget z Qt.Tool | Qt.FramelessWindowHint jako jej WindowFlags, która działa ładnie. Zawiera układ z kilkoma przyciskami (których rozmiar jest stały) i QTreeView. Teraz, gdy linie są dodawane do modelu QTreeView, QTreeView powinien automatycznie zwiększyć swój rozmiar, aby uniknąć pionowych pasków przewijania.Umożliwia automatyczną zmianę rozmiaru okna QTreeView do zawartości

Ustawienie QSizePolicy.Expanding zarówno na widżecie podpowiedzi narzędzia, jak i na QTreeView niczego nie zmieniło - być może brakuje tu jakiejś dodatkowej flagi lub czegoś tutaj.

Próbowałem również, metodę brute-force:

class ToolTip: 
    def __init__(self): 
     ... 
     self.itemView.setVerticalScrollMode(QAbstractItemView.ScrollPerPixel) 
     self.itemView.verticalScrollBar().rangeChanged.connect(self.resizeViewVertically) 

    def resizeViewVertically(self, min, max): 
     self.resize(self.width(), self.height() + max) 

która działa przez większość czasu, ale nie zawsze. Co jakiś czas (co drugi raz, aby być dokładnym, ale nie wiem, czy to przypadek, czy nie), używając tego kodu, widok zmienia się poprawnie (tzn. Cała zawartość pasuje i nie byłoby potrzeby pasek przewijania), ale pasek przewijania nie znika, umożliwiając przewinięcie do pustej przestrzeni pod ostatnią linią.

Odpowiedz

Powiązane problemy