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 shape 和shadow style 指定,用于在视觉上将框架与周围的 widget 区分开来。这些属性可通过setFrameStyle() 函数一起设置,并通过frameStyle() 读取。
框架形状有NoFrame,Box,Panel,StyledPanel,HLine 和VLine ;阴影样式有Plain,Raised 和Sunken 。
边框部件有三个属性,分别描述边框的厚度:lineWidth,midLineWidth, 和frameWidth 。
- 线宽是框架边框的宽度。可以通过修改它来定制边框的外观。
- 中线宽度指定边框中间额外线条的宽度,它使用第三种颜色来获得特殊的 3D 效果。请注意,只有在Box 、HLine 和VLine 上浮或下沉的框架中才会绘制中线。
- 边框宽度由边框样式决定,使用frameWidth() 函数可以获得所使用样式的定义值。
框架与框架内容之间的边距可以使用QWidget::setContentsMargins() 函数自定义。
下表列出了一些样式和线宽的组合:
成员类型 文档
enum QFrame::Shadow
此枚举类型定义了用于为帧提供 3D 效果的阴影类型。
常量 | 值 | 描述 |
---|---|---|
QFrame::Plain | 0x0010 | 框架和内容与周围环境平齐;使用调色板QPalette::WindowText 颜色绘制(无任何 3D 效果) |
QFrame::Raised | 0x0020 | 边框和内容呈凸起状;使用当前颜色组的明暗颜色绘制三维凸起线 |
QFrame::Sunken | 0x0030 | 框架和内容呈现凹陷;使用当前颜色组的明暗颜色绘制三维凹陷线 |
阴影与QFrame::Shape 、lineWidth() 和midLineWidth() 交互。请参见主类文档中的框架图片。
另请参见 QFrame::Shape 、lineWidth() 和midLineWidth()。
enum QFrame::Shape
该枚举类型定义了可用的框架形状。
常量 | 值 | 说明 |
---|---|---|
QFrame::NoFrame | 0 | QFrame 不绘制任何内容 |
QFrame::Box | 0x0001 | QFrame 在内容周围画一个框 |
QFrame::Panel | 0x0002 | QFrame 绘制面板,使内容看起来凸起或凹陷 |
QFrame::StyledPanel | 0x0006 | 绘制一个矩形面板,其外观取决于当前的图形用户界面风格。它可以是凸起的,也可以是凹陷的。 |
QFrame::HLine | 0x0004 | QFrame 绘制一条没有边框的水平线(可用作分隔线) |
QFrame::VLine | 0x0005 | QFrame 绘制一条不带任何边框的垂直线(可用作分隔线) |
QFrame::WinPanel | 0x0003 | 绘制一个矩形面板,可以像 Windows 2000 中的面板一样凸起或凹陷。指定此形状后,线宽将设为 2 像素。提供 WinPanel 是为了兼容。为了实现图形用户界面风格的独立性,我们建议使用 StyledPanel。 |
在不调用QStyle 的情况下,Shape 会与QFrame::Shadow 、lineWidth() 和midLineWidth() 交互,以创建总结果。请参见主类文档中的框架图片。
另请参见 QFrame::Shadow 、QFrame::style() 和QStyle::drawPrimitive()。
enum QFrame::StyleMask
该枚举定义了两个常量,可用于提取frameStyle() 的两个分量:
常量 | 值 | 说明 |
---|---|---|
QFrame::Shadow_Mask | 0x00f0 | frameStyle() 的Shadow 部分 |
QFrame::Shape_Mask | 0x000f | frameStyle() 的Shape 部分 |
通常情况下,您不需要使用这些值,因为frameShadow() 和frameShape() 已经提取了frameStyle() 的Shadow 和Shape 部分。
另请参阅 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
该属性表示行宽
请注意,用作分隔符的帧的总行宽(HLine 和VLine )由frameWidth 指定。
默认值为 1。
访问功能:
int | lineWidth() const |
void | setLineWidth(int) |
另请参阅 midLineWidth 和frameWidth 。
midLineWidth : int
此属性保存中线的宽度
默认值为 0。
访问功能:
int | midLineWidth() const |
void | setMidLineWidth(int) |
另请参阅 lineWidth 和frameWidth 。
成员函数文档
[explicit]
QFrame::QFrame(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
构造一个框架 widget,框架样式为NoFrame ,框架宽度为 1 像素。
parent 和f 参数传递给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,则会为Raised 或Sunken 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.