QFrame Class

QFrame 类是可拥有框架的 widget 的基类。更多

Header: #include <QFrame>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
继承: QWidget
继承者:

QAbstractScrollArea,QLabel,QLCDNumber,QSplitter,QStackedWidget, 以及QToolBox

公共类型

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

属性

公共函数

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)

重新实现的公共函数

virtual QSize sizeHint() const override

受保护函数

virtual void initStyleOption(QStyleOptionFrame *option) const

重新实现的受保护函数

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

详细说明

QMenu QProgressBar 具有 "下沉 "外观。 具有扁平外观。这些窗口小部件的框架可以更改。QLabel

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

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

QFrame 类还可直接用于创建没有任何内容的简单占位符框架。

框架样式由frame shapeshadow style 指定,用于在视觉上将框架与周围的 widget 区分开来。这些属性可通过setFrameStyle() 函数一起设置,并通过frameStyle() 读取。

框架形状有NoFrame,Box,Panel,StyledPanel,HLineVLine ;阴影样式有Plain,RaisedSunken

边框部件有三个属性,分别描述边框的厚度:lineWidth,midLineWidth, 和frameWidth

  • 线宽是框架边框的宽度。可以通过修改它来定制边框的外观。
  • 中线宽度指定边框中间额外线条的宽度,它使用第三种颜色来获得特殊的 3D 效果。请注意,只有在BoxHLineVLine 上浮或下沉的框架中才会绘制中线。
  • 边框宽度由边框样式决定,使用frameWidth() 函数可以获得所使用样式的定义值。

框架与框架内容之间的边距可以使用QWidget::setContentsMargins() 函数自定义。

下表列出了一些样式和线宽的组合:

框架样式表

成员类型 文档

enum QFrame::Shadow

此枚举类型定义了用于为帧提供 3D 效果的阴影类型。

常量描述
QFrame::Plain0x0010框架和内容与周围环境平齐;使用调色板QPalette::WindowText 颜色绘制(无任何 3D 效果)
QFrame::Raised0x0020边框和内容呈凸起状;使用当前颜色组的明暗颜色绘制三维凸起线
QFrame::Sunken0x0030框架和内容呈现凹陷;使用当前颜色组的明暗颜色绘制三维凹陷线

阴影与QFrame::ShapelineWidth() 和midLineWidth() 交互。请参见主类文档中的框架图片。

另请参见 QFrame::ShapelineWidth() 和midLineWidth()。

enum QFrame::Shape

该枚举类型定义了可用的框架形状。

常量说明
QFrame::NoFrame0QFrame 不绘制任何内容
QFrame::Box0x0001QFrame 在内容周围画一个框
QFrame::Panel0x0002QFrame 绘制面板,使内容看起来凸起或凹陷
QFrame::StyledPanel0x0006绘制一个矩形面板,其外观取决于当前的图形用户界面风格。它可以是凸起的,也可以是凹陷的。
QFrame::HLine0x0004QFrame 绘制一条没有边框的水平线(可用作分隔线)
QFrame::VLine0x0005QFrame 绘制一条不带任何边框的垂直线(可用作分隔线)
QFrame::WinPanel0x0003绘制一个矩形面板,可以像 Windows 2000 中的面板一样凸起或凹陷。指定此形状后,线宽将设为 2 像素。提供 WinPanel 是为了兼容。为了实现图形用户界面风格的独立性,我们建议使用 StyledPanel。

在不调用QStyle 的情况下,Shape 会与QFrame::ShadowlineWidth() 和midLineWidth() 交互,以创建总结果。请参见主类文档中的框架图片。

另请参见 QFrame::ShadowQFrame::style() 和QStyle::drawPrimitive()。

enum QFrame::StyleMask

该枚举定义了两个常量,可用于提取frameStyle() 的两个分量:

常量说明
QFrame::Shadow_Mask0x00f0frameStyle() 的Shadow 部分
QFrame::Shape_Mask0x000fframeStyle() 的Shape 部分

通常情况下,您不需要使用这些值,因为frameShadow() 和frameShape() 已经提取了frameStyle() 的ShadowShape 部分。

另请参阅 frameStyle() 和setFrameStyle()。

属性文档

frameRect : QRect

此属性保存框架的矩形

边框的矩形是边框绘制的矩形区域。默认情况下,这是整个部件。设置矩形不会导致部件更新。当窗口小部件改变大小时,框架的矩形会自动调整。

如果将矩形设置为空矩形(例如QRect(0, 0, 0, 0)),那么得到的框架矩形相当于widget rectangle

访问功能:

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

frameShadow : Shadow

此属性保存框架样式中的框架阴影值

访问函数中的框架阴影值:

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

另请参阅 frameStyle() 和frameShape()。

frameShape : Shape

此属性保存框架样式中的框架形状值

访问函数中的框架形状值:

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

另请参阅 frameStyle() 和frameShadow()。

[read-only] frameWidth : const int

该属性表示绘制的边框宽度。

请注意,边框宽度不仅取决于行宽和中线宽度,还取决于frame style 。例如,由NoFrame 指定的样式的边框宽度始终为 0,而样式Panel 的边框宽度与行宽相当。

访问函数:

int frameWidth() const

另请参阅 lineWidth(),midLineWidth() 和frameStyle()。

lineWidth : int

该属性表示行宽

请注意,用作分隔符的帧的总行宽(HLineVLine )由frameWidth 指定。

默认值为 1。

访问功能:

int lineWidth() const
void setLineWidth(int)

另请参阅 midLineWidthframeWidth

midLineWidth : int

此属性保存中线的宽度

默认值为 0。

访问功能:

int midLineWidth() const
void setMidLineWidth(int)

另请参阅 lineWidthframeWidth

成员函数文档

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

构造一个框架 widget,框架样式为NoFrame ,框架宽度为 1 像素。

parentf 参数传递给QWidget 构造函数。

[virtual noexcept] QFrame::~QFrame()

破坏框架。

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

重实现:QWidget::changeEvent(QEvent *event).

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

重实现:QWidget::event(QEvent *event).

int QFrame::frameStyle() const

返回框架样式。

默认值为QFrame::Plain

另请参阅 setFrameStyle()、frameShape() 和frameShadow()。

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

使用本QFrame 中的值初始化option 。当子类需要QStyleOptionFrame 但又不想自己填写所有信息时,该方法非常有用。

另请参阅 QStyleOption::initFrom()。

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

重实现:QWidget::paintEvent(QPaintEvent *event).

void QFrame::setFrameStyle(int style)

将边框样式设置为style

style 是边框形状和边框阴影样式之间的位相 OR。请参见主类文档中的框架图片。

框架形状在QFrame::Shape 中给出,阴影样式在QFrame::Shadow 中给出。

如果指定的中间线宽度大于 0,则会为RaisedSunken Box ,HLine, 和VLine 框架绘制额外的线。当前颜色组的中间色用于绘制中间线。

另请参阅 frameStyle() 。

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

重构属性访问函数: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.