PySide Scrollarea

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
ScooB
User
Beiträge: 54
Registriert: Donnerstag 28. April 2011, 10:47

Hallo

ich komm grad nicht weiter und zwar habe ich in ein Dockwidget in dem ich eine Grafik lade alledings ist die Grafik größer wie das Widget und ich benötige Scrollbars
nur irgendwie bekomm ich das nicht hin

Hätte jemand nen kleines Beispiel oder anregungen

Danke
ScooB
lunar

In der Dokumentation zu "QScrollArea" ist unmittelbar am Anfang ein Beispiel für das Anzeigen eines Bilds zu sehen.
ScooB
User
Beiträge: 54
Registriert: Donnerstag 28. April 2011, 10:47

soweit bin ich auch gekommen nur ist mein Problem das er die Grafik nicht anzeigt wenn ich es so verwende und dadurch auch das QWidget keine Scrollbar hat
mein Problem ist bestimmt das ich es nocht anhänge an das QWidget
Bei einem QMainwindow mach man ja .setCentralWidget() wie mache ich das jetzt in einem QWidget??
lunar

@ScooB: Zeige bitte Deinen Quelltext, ansonsten kann ich nur raten, was Du meinst.
ScooB
User
Beiträge: 54
Registriert: Donnerstag 28. April 2011, 10:47

Code des Witget das angedockt wird

Code: Alles auswählen

class singleline(QWidget):
    def __init__(self, auswahl):
        super(singleline, self).__init__()
        
        self.imageLabel = QLabel()
        self.image = QImage("1.png")
        self.imageLabel.setPixmap(QPixmap.fromImage(self.image))
        
        self.scrollArea = QScrollArea()
        self.scrollArea.setBackgroundRole(QPalette.Dark)
        self.scrollArea.setWidget(self.imageLabel)
        
        if auswahl == 1:
            self.singleline1()
        else:
            self.singleline2()

Code wie das Widget als QDockwidget angedockt wird

Code: Alles auswählen

        
        self.dock = QDockWidget("Singleline1", self)
        self.dock.setFeatures(QDockWidget.NoDockWidgetFeatures)
        self.dock.setAllowedAreas(Qt.RightDockWidgetArea)
        self.singleline1 = singleline(1)    
        self.dock.setWidget(self.singleline1)
        self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.dock)
lunar

@ScooB: Keines der Steuerelement hat ein Vater-Objekt. Folglich ist es nicht weiter überraschend, dass die ScrollArea nicht angezeigt wird, schließlich wird ihr nirgendwo "gesagt", wo sie angezeigt werden soll. Das "parent"-Argument in den Konstruktoren von "QWidget"-Objekten ist nicht zum Spaß da, und sollte immer korrekt angegeben werden.

Gibt es einen besonderen Grund, warum "singleline" von "QWidget" erbt? Dem Beispiel zufolge wäre es wesentlich sinnvoller, wenn "singleline" direkt von "QScrollArea" erben würde, da der einzige Zweck von "singleline" offenbar die Anzeige der ScrollArea ist.

Klassennamen sollten gemäß PEP 8 mit einem Großbuchstaben beginnen ("singleline" → "Singleline").

Für die Zukunft gewöhne Dir bitte ab, unvollständige Ausschnitte zu zeigen. In diesem Fall hast Du Glück, dass der Fehler aus diesen Abschnitten ersichtlich ist, aber das ist erfahrungsgemäß ein seltenes Glück. Erstelle bitte stattdessen ein minimales, lauffähiges Beispiel, mit dem anderen den Fehler nachvollziehen können. Danke :)
Antworten