Zeigen Sie das Bild in Qt an, um es an die Etikettengröße anzupassen
Ich habe bereits versucht, verschiedene Methoden zum anzeigen eines Bildes auf einem Formular, aber keiner von Ihnen arbeitet, wie ich es gerne hätte.
Habe ich gelesen, dass viele Orte der einfachste Weg ist, ein Etikett zu erstellen und zu verwenden, um das Bild anzuzeigen. Ich habe ein label, dessen Größe angegeben ist, die durch das layout, aber wenn ich ein Bild geladen, es mit einer pixmap, die Beschriftung wird angepasst, um die Größe des Bildes. Wenn ich mit img-tag als text-oder css-background-Eigenschaft, es zeigt auch nicht das ganze Bild. Was würde ich gerne tun, ist laden Sie das Bild und passen sich in das label, nicht die änderung der Bezeichnung der Größe, aber wenn ich die Größe meiner Fenster, und indem, dass die Größe des Etiketts, als auch, das Bild sollte in der Größe verändert werden, auch so wird es immer passen hinein.
Wenn die einzige Methode ist, um das Etikett Größe, und die Größe der pixmap, so dass es passen würde, und Griff in das resize-Ereignis (signal), wie kann ich die Größe der pixmap? Ich hoffe, ich werde Sie nicht brauchen, speichern Sie die ganze Sache in ein QImage, und erstellen Sie eine pixmap von ihm jede Zeit.
Ebenfalls, wie kann ich es mittig? Wenn es nicht passen sowohl die Breite und die Höhe, möchte ich die kleinere dimension zentriert werden.
Oh, und ich möchte nicht mit den Schiebereglern Griff überläuft.
InformationsquelleAutor der Frage Máthé Endre-Botond | 2011-04-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tut QLabel::setScaledContents(bool) helfen? Es kann auch einige nützliche Informationen in der Bild-viewer-Beispiel zu.
InformationsquelleAutor der Antwort Arnold Spence
Tatsächlich gibt es eine sehr einfache Lösung für dieses problem. Es gibt zwei Dinge, die Sie ändern sollten:
legen Sie die label-Größe Politik ignoriert
Wenn die lblImage ist die Größenänderung automatisch, wird das Bild Strecke, um die Größe des Etiketts.
InformationsquelleAutor der Antwort bukkfa
Werde ich auch die Antwort auf meine eigene Frage, aber nicht markieren Sie ihn als Lösung, denn ich bat um eine einfache eins, das oben gegeben. Ich landete mit eine nicht allzu einfache Lösung, nachdem alle, so wer Sie auch braucht, etwas ähnliches zu tun und die Zeit hat, mit ihm zu spielen hier ist meine Letzte funktionierende code. Die Idee ist, erweitern Sie die QLabel-und überlastung der setPixmap und die drawEvent Methoden.
QPictureLabel.hpp (header-Datei)
QPictureLabel.cpp (Umsetzung)
Nutzung : die gleichen wie bei einem normalen label für die Anzeige von Bild wirthout die setScaledContents
InformationsquelleAutor der Antwort Máthé Endre-Botond
Behalten Sie eine Kopie Ihrer ursprünglichen
pixmap
herum. Schließen Sie dann dasresized
signal an einen slot (oder überschreiben Sie dieresizeEvent()
- Funktion), der dies implementiert :InformationsquelleAutor der Antwort Tim MB