2010-11-26 18 views
2

Ich entwickle ein benutzerdefiniertes Plugin in Qt und es gibt diese Situation, wo ich ein Widget erstellen muss, das ein Bild darauf hat. Also verwende ich QLabel als Basisklasse für mein benutzerdefiniertes Widget. Hier ist der Code für Paint-EreignisSo skalieren Sie ein Bild in QLabel

 QPixmap pic("/general/source/pic.png"); 
    setAutoFillBackground(true); 
    QPalette palette; 
    palette.setBrush(QPalette::Window, QBrush(pic)); 

    this->setPalette(palette); 

nun das Bild auf dem QLabel gemacht wird, aber das ist nicht das, was ich wollte.

  1. Ich möchte das Bild auf die Größe des QLabel skalieren.
  2. Ich möchte nicht das Bild selbst wiederholen, wenn die Größe des QLabel über die Größe des Bildes hinausgeht.

Bitte helfen.

Antwort

3

Vorausgesetzt, dass Sie die Größe Ihrer Kontrolle geraten können Sie Ihre pixmap skalieren können, bevor Sie es in der Pinsel-Set

pic.scaled (width, height, Qt::IgnoreAspectRatio, Qt::FastTransformation) 

Verwendung Das gibt eine andere QPixmap, die Sie Ihren QBrush passieren können.

Als Referenz können Sie auch ein Stylesheet verwenden, um das Rahmenbild für Ihr Steuerelement festzulegen.

+0

Dies ist nicht für mich nicht funktioniert :( – chai

+0

Was genau nicht funktioniert? Das Bild skalieren nicht wahr? Es ist nicht richtig skalierten? Sie können‘ t erhalten die Größe der Kontrolle? – Liz

+1

Ok .. bekam es, was schief gelaufen ist .. der richtige Code ist Pixmap skaliert = pic.scaled (Breite, Höhe, Qt :: IgnoreAspectRatio, Qt :: FastTransformation) Und dann Anzeige skaliert – chai

-1

Wenn Sie eine benutzerdefinierte Widget-Klasse haben, können Sie das paintEvent überschreiben und an diesem Punkt die richtige Zeichnung erstellen. Ich weiß nicht, ob Sie das Pixmap einfach auf die richtige Größe skalieren und die Klasse der Eltern aufrufen können, um die Zeichnung fertig zu stellen, oder ob Sie alles selbst machen müssen.

2

Versuchen zu verwenden, um die Funktion QLabel

setScaledContents(true); 
+0

Funktioniert nur, um Pixmap zu vergrößern Wenn Sie versuchen, große Pixmap in kleine Orte zu platzieren, würde es abgeschnitten werden –

Verwandte Themen