QFrame 类

QFrame 类是具有边框的窗口部件的基类。 更多...

头文件 #include <QFrame>
CMakefind_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmakeQT += widgets
继承自 QWidget
派生自

QAbstractScrollArea, QLabel, QLCDNumber, QSplitter, QStackedWidget, 和 QToolBox

公共类型

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

属性

公共函数

QFrame(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
virtual~QFrame()
QRectframeRect() const
QFrame::ShadowframeShadow() const
QFrame::ShapeframeShape() const
intframeStyle() const
intframeWidth() const
intlineWidth() const
intmidLineWidth() const
voidsetFrameRect(const QRect &)
voidsetFrameShadow(QFrame::Shadow)
voidsetFrameShape(QFrame::Shape)
voidsetFrameStyle(int style)
voidsetLineWidth(int)
voidsetMidLineWidth(int)

重写的公共函数

virtual QSizesizeHint() const override

受保护的函数

virtual voidinitStyleOption(QStyleOptionFrame *option) const

重新实现保护函数

virtual voidchangeEvent(QEvent *ev) override
virtual boolevent(QEvent *e) override
virtual voidpaintEvent(QPaintEvent *) override

详细描述

QMenu 使用此方法将菜单“提升”到周围屏幕上方。 QProgressBar 有一种“凹陷”的外观。 QLabel 有一种平坦的外观。这些小部件的框架可以更改。

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

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

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

框架样式由一个 框架形状 和一个 阴影样式 确定,这些样式用于在视觉上将框架与周围小部件分开。可以使用 setFrameStyle() 函数一起设置这些属性,并使用 frameStyle() 函数读取。

框架形状是 NoFrame(无边界)、Box(框)、Panel(面板)、StyledPanel(样式面板)、HLine(水平线)和 VLine(垂直线);阴影样式是 Plain(平面)、Raised(凸起)和 Sunken(凹陷)。

框架小部件有三个属性,用于描述边框的厚度:lineWidth(线宽)、midLineWidth(中线宽)和 frameWidth(框架宽)。

  • 线宽是框架边框的宽度。它可以被更改以自定义框架的外观。
  • 中线宽度指定了框架中间额外的线的宽度,该线使用第三种颜色以获得特殊的 3D 效果。请注意,中线仅在 Box(框)、HLine(水平线)和 VLine(垂直线)框架被提升或凹陷时绘制。
  • 框架宽由框架样式确定,使用 frameWidth() 函数可以获取定义给该样式的值。

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

此表展示了某些样式和线宽的组合

Table of frame styles

成员类型文档

enum QFrame::Shadow

此枚举类型定义了用于给框架增加 3D 效果的阴影类型。

常量描述
QFrame::Plain0x0010框架和内容看起来与周围环境处于同一水平;使用调色板 QPalette::WindowText 颜色绘制(没有 3D 效果)
QFrame::Raised0x0020框架和内容看起来是凸起的;使用当前配色组的亮色和暗色绘制 3D 凸起线条
QFrame::Sunken0x0030框架和内容看起来是凹陷的;使用当前配色组的亮色和暗色绘制 3D 凹陷线条

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

另请参阅 QFrame::ShapelineWidth() 和 midLineWidth

enum QFrame::Shape

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

常量描述
QFrame::NoFrame0QFrame 绘制无内容
QFrame::Box0x0001QFrame 在其内容周围绘制一个框
QFrame::Panel0x0002QFrame 绘制一个面板,使内容看起来凸起或凹下
QFrame::StyledPanel0x0006绘制一个矩形面板,其外观取决于当前的GUI样式。它可以凸起或凹下。
QFrame::HLine0x0004QFrame 绘制一个水平线,围绕内容不绘制(可用作分隔符)
QFrame::VLine0x0005QFrame 绘制一个垂直线,围绕内容不绘制(可用作分隔符)
QFrame::WinPanel0x0003绘制一个可以凸起或凹下的矩形面板,类似于Windows 2000中的那些。指定此形状将线宽设置为2像素。WinPanel是为了兼容性提供的。为了独立于GUI样式,我们建议使用StyledPanel。

当它不调用 QStyle 时,Shape通过与 QFrame::Shadow、线宽度《a href="qframe.html#lineWidth-prop" translate="no">lineWidth() 和《a href="qframe.html#midLineWidth-prop" translate="no">midLineWidth() 相互作用来创建总结果。请参阅主类文档中帧的图片。

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

枚举 QFrame::StyleMask

此枚举定义了两个常量,可用于提取 frameStyle() 的两个组件

常量描述
QFrame::Shadow_Mask0x00f0frameStyle() 中的 Shadow 部分
QFrame::Shape_Mask0x000fframeStyle() 中的 Shape 部分

通常,您不需要使用这些(因为 frameShadow() 和 frameShape() 已提取了 frameStyle() 的 Shadow 和 Shape 部分)。

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

属性文档

frameRect : QRect

此属性持有框架的矩形

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

如果您设置矩形为空矩形(例如,QRect(0, 0, 0, 0)),则结果框架矩形等效于小部件矩形。

访问函数

QRectframeRect() const
voidsetFrameRect(const QRect &)

frameShadow : Shadow

此属性持有从框架样式获得的框架阴影值

访问函数

QFrame::ShadowframeShadow() const
voidsetFrameShadow(QFrame::Shadow)

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

frameShape : Shape

此属性持有从框架样式获得的框架形状值

访问函数

QFrame::ShapeframeShape() const
voidsetFrameShape(QFrame::Shape)

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

[只读] frameWidth : const int

此属性保存绘制框架的宽度。

请注意,框架宽度取决于框架样式,不仅仅是线条宽度和中线宽度。例如,由NoFrame指定的样式始终具有宽度为0的框架,而样式Panel的框架宽度与线条宽度相等。

访问函数

intframeWidth() const

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

lineWidth : int

此属性保存线条宽度。

请注意,用作分隔符的框架(例如HLineVLine)的总线条宽度由frameWidth指定。

默认值是1。

访问函数

intlineWidth() const
voidsetLineWidth(int)

另请参阅midLineWidthframeWidth

midLineWidth : int

此属性保存中线的宽度。

默认值是0。

访问函数

intmidLineWidth() const
voidsetMidLineWidth(int)

另请参阅lineWidthframeWidth

成员函数文档

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

使用框架样式NoFrame和1像素框架宽度构建框架小部件。

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

[虚拟 noexcept] QFrame::~QFrame()

销毁框架。

[覆盖虚拟受保护] void QFrame::changeEvent(QEvent *ev)

重新实现:QWidget::changeEvent(QEvent *event)。

[覆盖虚拟受保护] bool QFrame::event(QEvent *e)

重新实现:QWidget::event(QEvent *event)。

int QFrame::frameStyle() const

返回框架样式。

默认值是QFrame::Plain

另请参阅setFrameStyle()、frameShapeframeShadow

[虚拟受保护] void QFrame::initStyleOption(QStyleOptionFrame *option) const

使用此QFrame的值初始化 选项。此方法对于子类很有用,当它们需要QStyleOptionFrame但不想自行填写所有信息时。

另请参阅QStyleOption::initFrom

[覆盖虚拟受保护] void QFrame::paintEvent(QPaintEvent *)

重实现了:QWidget::paintEvent(QPaintEvent *event)。

void QFrame::setFrameStyle(int style)

设置为 样式

样式 是帧形状和帧阴影样式的按位或。

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

如果指定了大于 0 的中间线宽,则将在 凸起凹进水平线垂直线 帧上绘制额外的线条。使用当前颜色组的中线颜色绘制中间线。

另请参阅frameStyle

[覆盖虚拟] QSize QFrame::sizeHint() const

实现对属性: QWidget::sizeHint 的访问函数。

© 2024 The Qt Company Ltd. 本文档中的贡献是各自所有者的版权。本提供的文档根据由自由软件基金会发布GNU 自由文档许可版本 1.3 的条款获得许可。Qt及其相关标志是芬兰和/或全球其他国家的 The Qt Company Ltd. 的商标。所有其他商标均为其各自所有者的财产。