QFrame Class
La clase QFrame es la clase base de los widgets que pueden tener un marco. Más...
| Cabecera: | #include <QFrame> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets)target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Hereda: | QWidget |
| Heredado de: | QAbstractScrollArea, QLabel, QLCDNumber, QSplitter, QStackedWidget, y QToolBox |
Tipos públicos
| enum | Shadow { Plain, Raised, Sunken } |
| enum | Shape { NoFrame, Box, Panel, StyledPanel, HLine, …, WinPanel } |
| enum | StyleMask { Shadow_Mask, Shape_Mask } |
Propiedades
|
|
Funciones públicas
| 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) |
Funciones públicas reimplementadas
| virtual QSize | sizeHint() const override |
Funciones protegidas
| virtual void | initStyleOption(QStyleOptionFrame *option) const |
Funciones protegidas reimplementadas
| virtual void | changeEvent(QEvent *ev) override |
| virtual bool | event(QEvent *e) override |
| virtual void | paintEvent(QPaintEvent *) override |
Descripción detallada
QMenu utiliza esto para "elevar" el menú por encima de la pantalla circundante. QProgressBar tiene un aspecto "hundido". QLabel tiene un aspecto plano. Los marcos de estos widgets pueden cambiarse.
QLabel label(...); label.setFrameStyle(QFrame::Panel | QFrame::Raised); label.setLineWidth(2); QProgressBar pbar(...); label.setFrameStyle(QFrame::NoFrame);
La clase QFrame también se puede utilizar directamente para crear marcos simples sin ningún contenido.
El estilo del marco se especifica mediante frame shape y shadow style que se utiliza para separar visualmente el marco de los widgets circundantes. Estas propiedades pueden establecerse juntas utilizando la función setFrameStyle() y leerse con frameStyle().
Las formas de marco son NoFrame, Box, Panel, StyledPanel, HLine y VLine; los estilos de sombra son Plain, Raised y Sunken.
Un widget de marco tiene tres atributos que describen el grosor del borde: lineWidth, midLineWidth, y frameWidth.
- El ancho de línea es el ancho del borde del marco. Puede modificarse para personalizar el aspecto del marco.
- La anchura de la línea media especifica la anchura de una línea extra en medio del marco, que utiliza un tercer color para obtener un efecto 3D especial. Observe que sólo se dibuja una línea intermedia en los marcos Box, HLine y VLine que están elevados o hundidos.
- La anchura del marco viene determinada por el estilo del marco, y la función frameWidth() se utiliza para obtener el valor definido para el estilo utilizado.
El margen entre el marco y el contenido del marco puede personalizarse con la función QWidget::setContentsMargins().
Esta tabla muestra algunas de las combinaciones de estilos y anchos de línea:

Miembro Tipo Documentación
enum QFrame::Shadow
Este tipo enum define los tipos de sombra que se utilizan para dar un efecto 3D a los fotogramas.
| Constante | Valor | Descripción |
|---|---|---|
QFrame::Plain | 0x0010 | el marco y el contenido aparecen nivelados con el entorno; dibuja utilizando el color de la paleta QPalette::WindowText (sin ningún efecto 3D) |
QFrame::Raised | 0x0020 | el marco y el contenido aparecen elevados; dibuja una línea 3D elevada utilizando los colores claros y oscuros del grupo de colores actual |
QFrame::Sunken | 0x0030 | el marco y el contenido aparecen hundidos; dibuja una línea 3D hundida utilizando los colores claros y oscuros del grupo de colores actual. |
Shadow interactúa con QFrame::Shape, el lineWidth() y el midLineWidth(). Véase la imagen de los marcos en la documentación de la clase principal.
Véase también QFrame::Shape, lineWidth(), y midLineWidth().
enum QFrame::Shape
Este tipo enum define las formas de marco disponibles.
| Constante | Valor | Descripción |
|---|---|---|
QFrame::NoFrame | 0 | QFrame no dibuja nada |
QFrame::Box | 0x0001 | QFrame dibuja una caja alrededor de su contenido |
QFrame::Panel | 0x0002 | QFrame dibuja un panel para que el contenido aparezca elevado o hundido |
QFrame::StyledPanel | 0x0006 | dibuja un panel rectangular con un aspecto que depende del estilo GUI actual. Puede estar elevado o hundido. |
QFrame::HLine | 0x0004 | QFrame dibuja una línea horizontal que no enmarca nada (útil como separador) |
QFrame::VLine | 0x0005 | QFrame dibuja una línea vertical que no enmarca nada (útil como separador) |
QFrame::WinPanel | 0x0003 | dibuja un panel rectangular que puede ser elevado o hundido como los de Windows 2000. Al especificar esta forma, el ancho de línea se fija en 2 píxeles. WinPanel se proporciona por compatibilidad. Para independencia del estilo GUI recomendamos usar StyledPanel en su lugar. |
Cuando no llama a QStyle, Shape interactúa con QFrame::Shadow, el lineWidth() y el midLineWidth() para crear el resultado total. Ver la imagen de los marcos en la documentación de la clase principal.
Véase también QFrame::Shadow, QFrame::style(), y QStyle::drawPrimitive().
enum QFrame::StyleMask
Este enum define dos constantes que pueden utilizarse para extraer los dos componentes de frameStyle():
| Constante | Valor | Descripción |
|---|---|---|
QFrame::Shadow_Mask | 0x00f0 | La parte Shadow de frameStyle() |
QFrame::Shape_Mask | 0x000f | La parte Shape de frameStyle() |
Normalmente, no es necesario utilizarlas, ya que frameShadow() y frameShape() ya extraen las partes Shadow y Shape de frameStyle().
Véase también frameStyle() y setFrameStyle().
Documentación de propiedades
frameRect : QRect
Esta propiedad contiene el rectángulo del marco
El rectángulo del marco es el rectángulo en el que se dibuja el marco. Por defecto, es todo el widget. Establecer el rectángulo no causa una actualización del widget. El rectángulo del marco se ajusta automáticamente cuando el widget cambia de tamaño.
Si estableces el rectángulo a un rectángulo nulo (por ejemplo, QRect(0, 0, 0, 0)), entonces el rectángulo del marco resultante es equivalente al widget rectangle.
Funciones de acceso:
| QRect | frameRect() const |
| void | setFrameRect(const QRect &) |
frameShadow : Shadow
Esta propiedad contiene el valor de la sombra del estilo del marco
Funciones de acceso:
| QFrame::Shadow | frameShadow() const |
| void | setFrameShadow(QFrame::Shadow) |
Véase también frameStyle() y frameShape().
frameShape : Shape
Esta propiedad contiene el valor de la forma del marco del estilo del marco
Funciones de acceso:
| QFrame::Shape | frameShape() const |
| void | setFrameShape(QFrame::Shape) |
Véase también frameStyle() y frameShadow().
[read-only] frameWidth : int
Esta propiedad contiene el ancho del marco que se dibuja.
Tenga en cuenta que la anchura del marco depende del estilo frame style, no sólo de la anchura de la línea y de la línea media. Por ejemplo, el estilo especificado por NoFrame siempre tiene una anchura de marco de 0, mientras que el estilo Panel tiene una anchura de marco equivalente a la anchura de línea.
Funciones de acceso:
| int | frameWidth() const |
Véase también lineWidth(), midLineWidth() y frameStyle().
lineWidth : int
Esta propiedad mantiene el ancho de línea
Tenga en cuenta que el ancho total de línea para los marcos utilizados como separadores (HLine y VLine) se especifica mediante frameWidth.
El valor por defecto es 1.
Funciones de acceso:
| int | lineWidth() const |
| void | setLineWidth(int) |
Véase también midLineWidth y frameWidth.
midLineWidth : int
Esta propiedad contiene el ancho de la línea media
El valor por defecto es 0.
Funciones de acceso:
| int | midLineWidth() const |
| void | setMidLineWidth(int) |
Véase también lineWidth y frameWidth.
Documentación de las funciones miembro
[explicit] QFrame::QFrame(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
Construye un widget de marco con el estilo de marco NoFrame y un ancho de marco de 1 píxel.
Los argumentos parent y f se pasan al constructor QWidget.
[virtual noexcept] QFrame::~QFrame()
Destruye el marco.
[override virtual protected] void QFrame::changeEvent(QEvent *ev)
Reimplementa: QWidget::changeEvent(QEvent *event).
[override virtual protected] bool QFrame::event(QEvent *e)
Reimplementa: QWidget::event(QEvent *event).
int QFrame::frameStyle() const
Devuelve el estilo del marco.
El valor por defecto es QFrame::Plain.
Véase también setFrameStyle(), frameShape() y frameShadow().
[virtual protected] void QFrame::initStyleOption(QStyleOptionFrame *option) const
Inicializa option con los valores de este QFrame. Este método es útil para las subclases cuando necesitan un QStyleOptionFrame pero no quieren rellenar toda la información ellas mismas.
Véase también QStyleOption::initFrom().
[override virtual protected] void QFrame::paintEvent(QPaintEvent *)
Reimplementa: QWidget::paintEvent(QPaintEvent *event).
void QFrame::setFrameStyle(int style)
Establece el estilo de marco en style.
El style es el bitwise OR entre una forma de marco y un estilo de sombra de marco. Véase la imagen de los marcos en la documentación de la clase principal.
Las formas de marco se dan en QFrame::Shape y los estilos de sombra en QFrame::Shadow.
Si se especifica una anchura de línea media superior a 0, se dibuja una línea adicional para los marcos Raised o Sunken Box , HLine, y VLine. El color medio del grupo de colores actual se utiliza para dibujar las líneas medias.
Véase también frameStyle().
[override virtual] QSize QFrame::sizeHint() const
Reimplementa una función de acceso para la propiedad: QWidget::sizeHint.
© 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.