2017-02-15 4 views
0

Ich möchte ein Bild in meiner Qt GUI platzieren. Das Problem, das ich habe, ist mit der Skalierung des Bildes nach dem Laden - es scheint verkleinert zu werden. Das tritt aufgrund eines Fehlers in fitInView() Routine auf, die aufgerufen wird, um das Bild an die angegebene Fenstergröße anzupassen. Insbesondere in meiner Neuimplementierung von fitInView() gibt es die folgende Zeile ein:Qt Ansichtsfenstergröße ist falsch

viewrect = self.viewport().rect() 

viewport().rect() gibt falsche Ergebnisse zurück, weil das Bild noch nicht gezeigt worden ist, und das bewirkt, dass das Widget „Scheingrößen“ haben, wie in this forum thread gezeigt wurde.

Mögliche Lösungen, die ich gefunden habe, stimmen meist überein auf eine Sache - man muss eine showEvent() Routine implementieren, die fitInView() aufrufen würde; Auf diese Weise würde das Bild ordnungsgemäß geladen werden und das Widget-Ansichtsfenster wird auf einen korrekten Wert gesetzt. Ich habe versucht, dass:

def showEvent(self, event): 
    self.fitInView() 

Diese Funktion aufgerufen wird, nachdem ich ein Bild auswählen, das ich hochladen will, und ruft self.show() das Bild zu zeigen. Die Implementierung von showEvent() löste das Problem jedoch nicht. Ist jemand schon einmal auf dieses Problem gestoßen?

Antwort

-1

Die Lösung erwies sich als sehr ähnlich zu dem, was ich versuchte. Einfach setzen und Anpassen der Pixmap nach Aufruf window.show() hat das Größenproblem behoben! Es ist auch notwendig, die showEvent() Routine zu halten, damit dies richtig funktioniert.