2013-02-24 11 views
5

Ich versuche, eine QTreeView Größe automatisch auf den Inhalt zu ändern. Dies ist mein Setup: Ich versuche, eine "intelligente" Tool-Tipp zu erstellen, die eine QWidget mit Qt.Tool | Qt.FramelessWindowHint als WindowFlags ist, die gut funktioniert. Es enthält ein Layout mit einigen Schaltflächen (deren Größe konstant ist) und die QTreeView. Wenn jetzt Linien zum Modell QTreeView hinzugefügt werden, sollte die QTreeView automatisch ihre Größe erhöhen, um vertikale Bildlaufleisten zu vermeiden.Machen Sie QTreeView automatisch die Größe des Inhalts

Einstellung QSizePolicy.Expanding auf der Tooltipp-Widget und der QTreeView hat nichts geändert - vielleicht fehlt mir einige zusätzliche Flagge oder etwas hier.

Ich habe versucht, auch die folgenden, Brute-Force-Methode:

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) 

, die die meiste Zeit funktioniert, aber nicht immer. Hin und wieder (jedes zweite Mal, um genau zu sein, aber ich weiß nicht, ob das Zufall ist oder nicht), ändert sich die Ansicht mit diesem Code korrekt (dh alle Inhalte passen und es gibt keine Notwendigkeit für die Bildlaufleiste), aber die Bildlaufleiste verschwindet nicht, sodass Sie in den leeren Bereich unterhalb der letzten Zeile blättern können.

Antwort