Auf dieser Seite

QFrame Class

Die Klasse „QFrame“ ist die Basisklasse für Widgets, die einen Rahmen haben können. Mehr dazu...

Header: #include <QFrame>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Erbt von: QWidget
Vererbt an:

QAbstractScrollArea, QLabel, QLCDNumber, QSplitter, QStackedWidget sowie QToolBox

Öffentliche Typen

enum Shadow { Plain, Raised, Sunken }
enum Shape { NoFrame, Box, Panel, StyledPanel, HLine, …, WinPanel }
enum StyleMask { Shadow_Mask, Shape_Mask }

Eigenschaften

Öffentliche Funktionen

QFrame(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
virtual ~QFrame()
QRect frameRect() const
QFrame::Shadow frameShadow() const
QFrame::Shape frameShape() const
int frameStyle() const
int frameWidth() const
int lineWidth() const
int midLineWidth() const
void setFrameRect(const QRect &)
void setFrameShadow(QFrame::Shadow)
void setFrameShape(QFrame::Shape)
void setFrameStyle(int style)
void setLineWidth(int)
void setMidLineWidth(int)

Neu implementierte öffentliche Funktionen

virtual QSize sizeHint() const override

Geschützte Funktionen

virtual void initStyleOption(QStyleOptionFrame *option) const

Neu implementierte geschützte Funktionen

virtual void changeEvent(QEvent *ev) override
virtual bool event(QEvent *e) override
virtual void paintEvent(QPaintEvent *) override

Ausführliche Beschreibung

QMenu Dies wird verwendet, um das Menü über den umgebenden Bildschirm „herauszuheben“. QProgressBar hat ein „vertieftes“ Erscheinungsbild. QLabel hat ein flaches Erscheinungsbild. Die Rahmen solcher Widgets können geändert werden.

QLabel label(...);
label.setFrameStyle(QFrame::Panel | QFrame::Raised);
label.setLineWidth(2);

QProgressBar pbar(...);
label.setFrameStyle(QFrame::NoFrame);

Die Klasse `QFrame` kann auch direkt zum Erstellen einfacher Platzhalterrahmen ohne Inhalt verwendet werden.

Der Rahmenstil wird durch einen frame shape und einen shadow style festgelegt, die dazu dienen, den Rahmen optisch von den umgebenden Widgets abzugrenzen. Diese Eigenschaften können gemeinsam mit der Funktion setFrameStyle() gesetzt und mit frameStyle() ausgelesen werden.

Die Rahmenformen sind „ NoFrame “, „ Box “, „ Panel “, „ StyledPanel “, „ HLine “ und „ VLine “; die Schattenstile sind „ Plain “, „ Raised “ und „ Sunken “.

Ein Rahmen-Widget verfügt über drei Attribute, die die Dicke des Rahmens beschreiben: lineWidth, midLineWidth und frameWidth.

  • Die Linienbreite ist die Breite des Rahmenrandes. Sie kann angepasst werden, um das Erscheinungsbild des Rahmens individuell zu gestalten.
  • Die Mittellinienbreite gibt die Breite einer zusätzlichen Linie in der Mitte des Rahmens an, die eine dritte Farbe verwendet, um einen besonderen 3D-Effekt zu erzielen. Beachten Sie, dass eine Mittellinie nur für Rahmen mit den Attributen „ Box “, „ HLine “ und „ VLine “ gezeichnet wird, die erhaben oder vertieft sind.
  • Die Rahmenbreite wird durch den Rahmenstil bestimmt, und die Funktion ` frameWidth()` wird verwendet, um den für den verwendeten Stil definierten Wert abzurufen.

Der Abstand zwischen dem Rahmen und seinem Inhalt kann mit der Funktion ` QWidget::setContentsMargins()` angepasst werden.

Diese Tabelle zeigt einige Kombinationen aus Stilen und Linienbreiten:

Übersicht über die Rahmenausführungen

Mitgliedstyp Dokumentation

enum QFrame::Shadow

Dieser Enum-Typ definiert die Schattenarten, die verwendet werden, um Bildern einen 3D-Effekt zu verleihen.

KonstanteWertBeschreibung
QFrame::Plain0x0010Der Rahmen und der Inhalt erscheinen auf gleicher Ebene mit der Umgebung; die Darstellung erfolgt mit der Farbe „ QPalette::WindowText “ aus der Palette (ohne 3D-Effekt)
QFrame::Raised0x0020Der Rahmen und der Inhalt erscheinen erhaben; es wird eine erhabene 3D-Linie unter Verwendung der hellen und dunklen Farben der aktuellen Farbgruppe gezeichnet
QFrame::Sunken0x0030Der Rahmen und der Inhalt erscheinen vertieft; zeichnet eine vertiefte 3D-Linie unter Verwendung der hellen und dunklen Farben der aktuellen Farbgruppe

„Shadow“ interagiert mit „ QFrame::Shape “, „ lineWidth()“ und „ midLineWidth()“. Siehe die Abbildung der Rahmen in der Dokumentation der Hauptklasse.

Siehe auch „ QFrame::Shape“ , „ lineWidth()“ und „ midLineWidth()“.

enum QFrame::Shape

Dieser Enum-Typ definiert die verfügbaren Rahmenformen.

KonstanteWertBeschreibung
QFrame::NoFrame0QFrame Zeichnet nichts
QFrame::Box0x0001QFrame zeichnet einen Rahmen um den Inhalt
QFrame::Panel0x0002QFrame zeichnet ein Feld, um den Inhalt erhaben oder vertieft erscheinen zu lassen
QFrame::StyledPanel0x0006Zeichnet ein rechteckiges Feld, dessen Aussehen vom aktuellen GUI-Stil abhängt. Es kann erhaben oder vertieft sein.
QFrame::HLine0x0004QFrame Zeichnet eine horizontale Linie, die nichts umrahmt (nützlich als Trennlinie)
QFrame::VLine0x0005QFrame zeichnet eine vertikale Linie, die nichts umrahmt (nützlich als Trennlinie)
QFrame::WinPanel0x0003zeichnet ein rechteckiges Feld, das wie in Windows 2000 erhaben oder vertieft sein kann. Bei Angabe dieser Form wird die Linienbreite auf 2 Pixel festgelegt. WinPanel wird aus Kompatibilitätsgründen bereitgestellt. Für Unabhängigkeit vom GUI-Stil empfehlen wir stattdessen die Verwendung von StyledPanel.

Wenn es ` QStyle` nicht aufruft, interagiert `Shape` mit ` QFrame::Shadow`, der Methode ` lineWidth()` und der Methode ` midLineWidth()`, um das Gesamtergebnis zu erzeugen. Siehe die Abbildung der Rahmen in der Dokumentation der Hauptklasse.

Siehe auch ` QFrame::Shadow`, ` QFrame::style()` und ` QStyle::drawPrimitive()`.

enum QFrame::StyleMask

Diese Enumeration definiert zwei Konstanten, mit denen die beiden Komponenten von ` frameStyle()` extrahiert werden können:

KonstanteWertBeschreibung
QFrame::Shadow_Mask0x00f0Der „ Shadow “-Teil von „ frameStyle()“
QFrame::Shape_Mask0x000fDer Teil „ Shape “ von „ frameStyle “ ()

Normalerweise müssen Sie diese nicht verwenden, da frameShadow() und frameShape() bereits die Teile Shadow und Shape aus frameStyle() extrahieren.

Siehe auch frameStyle() und setFrameStyle().

Dokumentation zu den Eigenschaften

frameRect : QRect

Diese Eigenschaft enthält das Rechteck des Rahmens

Das Rahmenrechteck ist das Rechteck, in dem der Rahmen gezeichnet wird. Standardmäßig entspricht dies dem gesamten Widget. Das Festlegen des Rechtecks führt nicht zu einer Aktualisierung des Widgets. Das Rahmenrechteck wird automatisch angepasst, wenn sich die Größe des Widgets ändert.

Wenn Sie das Rechteck auf ein Null-Rechteck setzen (z. B. ` QRect` (0, 0, 0, 0)), entspricht das resultierende Rahmenrechteck dem Wert ` widget rectangle`.

Zugriffsfunktionen:

QRect frameRect() const
void setFrameRect(const QRect &)

frameShadow : Shadow

Diese Eigenschaft enthält den Wert für den Rahmen-Schatten aus dem Rahmenstil

Zugriffsfunktionen:

QFrame::Shadow frameShadow() const
void setFrameShadow(QFrame::Shadow)

Siehe auch frameStyle() und frameShape().

frameShape : Shape

Diese Eigenschaft enthält den Wert für die Rahmenform aus dem Rahmenstil

Zugriffsfunktionen:

QFrame::Shape frameShape() const
void setFrameShape(QFrame::Shape)

Siehe auch „ frameStyle()“ und „ frameShadow()“.

[read-only] frameWidth : int

Diese Eigenschaft gibt die Breite des gezeichneten Rahmens an.

Beachten Sie, dass die Rahmenbreite vom „ frame style “ abhängt und nicht nur von der Linienbreite und der Mittellinienbreite. Beispielsweise hat der durch „ NoFrame “ festgelegte Stil immer eine Rahmenbreite von 0, während der Stil „ Panel “ eine Rahmenbreite aufweist, die der Linienbreite entspricht.

Zugriffsfunktionen:

int frameWidth() const

Siehe auch lineWidth(), midLineWidth() und frameStyle().

lineWidth : int

Diese Eigenschaft legt die Linienbreite fest

Beachten Sie, dass die Gesamtlinienbreite für Rahmen, die als Trennzeichen verwendet werden (HLine und VLine), durch frameWidth festgelegt wird.

Der Standardwert ist 1.

Zugriffsfunktionen:

int lineWidth() const
void setLineWidth(int)

Siehe auch midLineWidth und frameWidth.

midLineWidth : int

Diese Eigenschaft gibt die Breite der Mittellinie an

Der Standardwert ist 0.

Zugriffsfunktionen:

int midLineWidth() const
void setMidLineWidth(int)

Siehe auch lineWidth und frameWidth.

Dokumentation der Member-Funktionen

[explicit] QFrame::QFrame(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

Erstellt ein Rahmen-Widget mit dem Rahmenstil „ NoFrame “ und einer Rahmenbreite von 1 Pixel.

Die Argumente „ parent “ und „ f “ werden an den Konstruktor „ QWidget “ übergeben.

[virtual noexcept] QFrame::~QFrame()

Zerstört den Rahmen.

[override virtual protected] void QFrame::changeEvent(QEvent *ev)

Umsetzt: ` QWidget::changeEvent(QEvent *event)`.

[override virtual protected] bool QFrame::event(QEvent *e)

Umsetzt: ` QWidget::event(QEvent *event)`.

int QFrame::frameStyle() const

Gibt den Rahmenstil zurück.

Der Standardwert ist „ QFrame::Plain “.

Siehe auch „ setFrameStyle()“, „ frameShape()“ und „ frameShadow()“.

[virtual protected] void QFrame::initStyleOption(QStyleOptionFrame *option) const

Initialisiert ` option ` mit den Werten aus diesem ` QFrame`. Diese Methode ist für Unterklassen nützlich, wenn sie ein ` QStyleOptionFrame ` benötigen, aber nicht alle Informationen selbst eingeben möchten.

Siehe auch ` QStyleOption::initFrom()`.

[override virtual protected] void QFrame::paintEvent(QPaintEvent *)

Umsetzt: ` QWidget::paintEvent` (`QPaintEvent *event`).

void QFrame::setFrameStyle(int style)

Legt den Rahmenstil auf „ style “ fest.

„ style “ ist das bitweise ODER aus einer Rahmenform und einem Rahmenschattenstil. Siehe die Abbildung der Rahmen in der Dokumentation der Hauptklasse.

Die Rahmenformen sind unter QFrame::Shape und die Schattenstile unter QFrame::Shadow aufgeführt.

Wenn eine Mittellinienbreite größer als 0 angegeben wird, wird bei den Rahmen „ Raised “ oder „ Sunken “ Box, „ HLine “ und „ VLine “ eine zusätzliche Linie gezeichnet. Für das Zeichnen der Mittellinien wird die Mittelfarbe der aktuellen Farbgruppe verwendet.

Siehe auch „ frameStyle()“.

[override virtual] QSize QFrame::sizeHint() const

Implementiert eine Zugriffsfunktion für die Eigenschaft „ QWidget::sizeHint “ neu.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.