Heim >Backend-Entwicklung >C++ >Wie ändere ich die Größe eines QLabel, um das Seitenverhältnis einer QPixmap beizubehalten?

Wie ändere ich die Größe eines QLabel, um das Seitenverhältnis einer QPixmap beizubehalten?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-29 15:23:02508Durchsuche

How to Resize a QLabel to Maintain the Aspect Ratio of a QPixmap?

Qt: Größenänderung von QLabel zur Beibehaltung des Seitenverhältnisses von QPixmap

Sie möchten eine QPixmap in einem QLabel anzeigen, das seine Größe anpasst und dabei das Seitenverhältnis beibehält ursprüngliches Seitenverhältnis.

Lösung:

Um dies zu erreichen, können Sie die Methoden QSizePolicy und sizeHint() nutzen, ohne dass eine Unterklassenbildung erforderlich ist.

QSizePolicy-Anpassung:

Wählen Sie eine geeignete Größenrichtlinie für Ihr QLabel aus, z. B. QSizePolicy::Expanding oder QSizePolicy::MinimumExpanding. Dadurch kann das Etikett je nach verfügbarem Platz vergrößert oder verkleinert werden.

Seitenverhältnis beibehalten:

Immer wenn sich die QPixmap ändert, können Sie sie skalieren und dabei das Seitenverhältnis beibehalten :

<code class="cpp">int w = label->width();
int h = label->height();

label->setPixmap(p.scaled(w,h,Qt::KeepAspectRatio));</code>

Ereignisbehandlung:

Fügen Sie diesen Code an zwei wichtigen Stellen hinzu:

  • Pixmap-Update: Wenn die QPixmap dynamisch aktualisiert wird.
  • ResizeEvent: Im resizeEvent des Widgets, das das QLabel enthält. Dadurch wird sichergestellt, dass die Beschriftung auch dann richtig skaliert bleibt, wenn sich die Größe des Widgets ändert.

Das obige ist der detaillierte Inhalt vonWie ändere ich die Größe eines QLabel, um das Seitenverhältnis einer QPixmap beizubehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn