Hallo zusammen,
ich habe ein kleines layout problem...
und zwar habe ich ein Fenster, wo mittig ein Bild in einem QLabel sitzt.
Das bild, ist eine ".png"-Datei und hat eine auflösung von 2100x1575.
Jetzt habe ich aber verschiedene Monitorauflösungen, z.B. 1200x1024 oder 1366x721 und ich möchte das das QLabel sich mit der Bildschirmauflösung sich mitanpasst. Ich weiß nicht recht wie ich das lösen soll.
Ich habe es jetzt mal versucht, die max. Größe des QLabel auf 640x480 zu setzen, das funktioniert auch wunderbar bei einer Auflösung von 1200x1024. Allerdings wenn ich das Programm dann mit einer Auflösung von 1366x721 starte, ist das Bild logischer weise sehr in die Länge gezerrt, die Höhe bleibt. Das QLabel hat dann eine Abmessung mit 640x210. Das schaut natürlich nicht sonderlich schön aus.
Habt Ihr da einen Lösungsansatz für mich?
Gibt es eine Funktion oder ein Flag das ich setzen kann, damit das QLabel sich mit der Bildschirmauflösung mitanpasst, also das Seitenverhältnis sich mitändert beim Bild??
Wäre toll wenn Ihr mir weiterhelfen könnt!!
lg
Bild an QLabel anpassen
-
reinki0013
- Beiträge: 174
- Registriert: 11. November 2008 09:37
- Wohnort: AUT
-
softwaremaker
- Beiträge: 149
- Registriert: 1. April 2009 19:25
Qt::KeepAspectRatio
ui->label->setPixmap( mypixmap.scaled( ui->label->width(), ui->label->height(), Qt::KeepAspectRatio, Qt::SmoothTransformation ) );
Edit: das ganze rufe ich bei resizeEvent des Labels auf.
Edit: das ganze rufe ich bei resizeEvent des Labels auf.
Zuletzt geändert von softwaremaker am 23. Februar 2011 23:56, insgesamt 1-mal geändert.
Warum nicht einfach
Da du aber irgendwie "QLabel" und "Bild" durcheinander wirbelst: Liegt dein QLabel in einem Layout, damit bei einem Resize des Fensters das QLabel automatisch mit angepasst wird?scaledContents : bool
This property holds whether the label will scale its contents to fill all available space.
When enabled and the label shows a pixmap, it will scale the pixmap to fill the available space.
This property's default is false.
Access functions:
bool hasScaledContents () const
void setScaledContents ( bool )