QFrame Class

Die Klasse QFrame ist die Basisklasse der Widgets, die einen Rahmen haben können. Mehr...

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

QAbstractScrollArea, QLabel, QLCDNumber, QSplitter, QStackedWidget, und 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)

Reimplementierte öffentliche Funktionen

virtual QSize sizeHint() const override

Geschützte Funktionen

virtual void initStyleOption(QStyleOptionFrame *option) const

Reimplementierte geschützte Funktionen

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

Detaillierte Beschreibung

QMenu verwendet dies, um das Menü über den umgebenden Bildschirm "anzuheben". QProgressBar hat ein "versunkenes" Aussehen. QLabel hat ein flaches Aussehen. Die Rahmen von Widgets wie diesen 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 zur Erstellung einfacher Platzhalterrahmen ohne Inhalt verwendet werden.

Der Stil des Rahmens wird durch eine frame shape und eine shadow style spezifiziert, die zur visuellen Abgrenzung des Rahmens von den umgebenden Widgets verwendet wird. Diese Eigenschaften können zusammen mit der Funktion setFrameStyle() eingestellt 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 hat drei Attribute, die die Dicke des Rahmens beschreiben: lineWidth, midLineWidth, und frameWidth.

  • Die Linienbreite ist die Breite des Rahmens. Sie kann geändert werden, um das Erscheinungsbild des Rahmens anzupassen.
  • Die Breite der Mittellinie gibt die Breite einer zusätzlichen Linie in der Mitte des Rahmens an, die eine dritte Farbe verwendet, um einen speziellen 3D-Effekt zu erzielen. Beachten Sie, dass eine Mittellinie nur bei den Rahmen Box, HLine und VLine gezeichnet wird, die erhöht 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 zu erhalten.

Der Rand zwischen dem Rahmen und dem Inhalt des Rahmens kann mit der Funktion QWidget::setContentsMargins() angepasst werden.

Diese Tabelle zeigt einige der Kombinationen von Stilen und Zeilenbreiten:

Table of frame styles

Mitglied Typ Dokumentation

enum QFrame::Shadow

Dieser Enum-Typ definiert die Arten von Schatten, die verwendet werden, um Rahmen einen 3D-Effekt zu verleihen.

KonstanteWertBeschreibung
QFrame::Plain0x0010der Rahmen und der Inhalt erscheinen in einer Ebene mit der Umgebung; wird mit der Farbe der Palette QPalette::WindowText gezeichnet (ohne 3D-Effekt)
QFrame::Raised0x0020der Rahmen und der Inhalt erscheinen erhaben; zeichnet eine erhabene 3D-Linie unter Verwendung der hellen und dunklen Farben der aktuellen Farbgruppe
QFrame::Sunken0x0030der Rahmen und der Inhalt erscheinen versenkt; zeichnet eine 3D-Senkungslinie unter Verwendung der hellen und dunklen Farben der aktuellen Farbgruppe

Shadow interagiert mit QFrame::Shape, lineWidth() und midLineWidth(). Siehe das Bild 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 seinen Inhalt
QFrame::Panel0x0002QFrame zeichnet ein Feld, um den Inhalt erhöht oder vertieft erscheinen zu lassen
QFrame::StyledPanel0x0006zeichnet ein rechteckiges Feld mit einem Aussehen, das 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 einrahmt (nützlich als Trennlinie)
QFrame::WinPanel0x0003zeichnet ein rechteckiges Feld, das erhöht oder vertieft sein kann, wie die Felder in Windows 2000. Die Angabe dieser Form setzt die Linienbreite auf 2 Pixel. WinPanel wird aus Kompatibilitätsgründen bereitgestellt. Für die Unabhängigkeit vom GUI-Stil empfehlen wir stattdessen die Verwendung von StyledPanel.

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

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

enum QFrame::StyleMask

Diese Aufzählung definiert zwei Konstanten, die verwendet werden können, um die beiden Komponenten von frameStyle() zu extrahieren:

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

Normalerweise brauchen Sie diese nicht zu verwenden, da frameShadow() und frameShape() bereits die Teile Shadow und Shape von frameStyle() extrahieren.

Siehe auch frameStyle() und setFrameStyle().

Dokumentation der Eigenschaften

frameRect : QRect

Diese Eigenschaft enthält das Rechteck des Rahmens

Das Rechteck des Rahmens ist das Rechteck, in dem der Rahmen gezeichnet wird. Standardmäßig ist dies das gesamte Widget. Die Einstellung 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)), dann entspricht das resultierende Rahmenrechteck dem widget rectangle.

Zugriffsfunktionen:

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

frameShadow : Shadow

Diese Eigenschaft enthält den Wert des Rahmenschattens aus dem Rahmenstil

Funktionen zugreifen:

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

Siehe auch frameStyle() und frameShape().

frameShape : Shape

Diese Eigenschaft enthält den Wert der Rahmenform aus dem Rahmenstil

Zugriffsfunktionen:

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

Siehe auch frameStyle() und frameShadow().

[read-only] frameWidth : const int

Diese Eigenschaft bestimmt die Breite des Rahmens, der gezeichnet wird.

Beachten Sie, dass die Rahmenbreite von frame style abhängt, nicht nur von der Linienbreite und der Mittellinienbreite. Zum Beispiel hat der durch NoFrame angegebene Stil immer eine Rahmenbreite von 0, während der Stil Panel eine Rahmenbreite hat, die der Linienbreite entspricht.

Zugriffsfunktionen:

int frameWidth() const

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

lineWidth : int

Diese Eigenschaft enthält die Zeilenbreite

Beachten Sie, dass die gesamte Zeilenbreite 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 Mitgliedsfunktionen

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

Konstruiert 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)

Reimplements: QWidget::changeEvent(QEvent *Event).

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

Reimplements: 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 dieser QFrame. Diese Methode ist nützlich für Unterklassen, wenn sie eine QStyleOptionFrame benötigen, aber nicht alle Informationen selbst eingeben wollen.

Siehe auch QStyleOption::initFrom().

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

Reimplements: QWidget::paintEvent(QPaintEvent *event).

void QFrame::setFrameStyle(int style)

Setzt den Rahmenstil auf style.

style ist das bitweise ODER zwischen einer Rahmenform und einem Rahmenschattenstil. Siehe das Bild der Rahmen in der Dokumentation der Hauptklasse.

Die Rahmenformen sind in QFrame::Shape und die Schattenstile in QFrame::Shadow angegeben.

Wenn eine Mittellinienbreite größer als 0 angegeben wird, wird eine zusätzliche Linie für Raised oder Sunken Box , HLine und VLine Rahmen gezeichnet. Die mittlere Farbe der aktuellen Farbgruppe wird für das Zeichnen von Mittellinien verwendet.

Siehe auch frameStyle().

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

Reimplantiert eine Zugriffsfunktion für die Eigenschaft: QWidget::sizeHint.

© 2025 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.