QFrame类

 *QFrame 类是可以具有框架的控件的基类。


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

QAbstractScrollAreaQLabelQLCDNumber

QSplitterQStackedWidget, QToolBox


【详细描述】

 QMenu用来“提升”周围屏幕上方的菜单。QProgressBar具有“凹陷”的外观,QLabel具有“扁平”的外观,像这样有框架的控件是可以改变的。

//以下两段利用QFrame值改变了QLabel和QProgressBar的默认外观。

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

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

QFrame类也可以直接创建没有任何内容的占位框架。

框架的样式由一个frame shape (框架形状)和一个shadow style (阴影样式)组成,用于在视觉上将框架与周围的控件区分开,使用setFrameStyle() 、frameStyle()可以设置和读取框架样式。

框架工具有三个描述边框粗细的属性: lineWidthmidLineWidth 和 frameWidth

  • 线条宽度是框架边框的宽度,可以对其进行自定义,以修改框架外观。
  • 中线宽度指定框架中间额外线条的宽度,该线条使用第三种颜色来获得3D效果。注意:中线仅用于BoxHLine 和 VLine凸起或凹陷的框架。
  • 框架宽度由框架样式决定,可用frameWidth() 函数获取这个值。

 QWidget::setContentsMargins()函数用于设置框架和框架内容之间的距离。

下表显示了一些样式和线宽的组合:


【公共类型】

enum QFrame::Shadow

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

常数描述
QFrame::Plain0x0010框架和内容与周围环境保持水平,使用QPalette::WindowText颜色(没有任何3D效果)。
QFrame::Raised0x0020框架和内容看起来凸起,使用当前颜色组的亮色和暗色绘制凸起线。
QFrame::Sunken0x0030框架和内容看起来凹陷,使用当前颜色组的亮色和暗色绘制凹陷线。

enum QFrame::Shape

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

常数描述
QFrame::NoFrame0无框架效果。
QFrame::Box0x0001在其内容周围绘制一个方框。
QFrame::Panel0x0002绘制一个平面,可以使内容凸起或凹陷。
QFrame::StyledPanel0x0006绘制一个矩形面板,其外观取决于当前GUI样式。它可以升高或下沉。
QFrame::HLine0x0004画一条不框住任何东西的水平线(用作分隔符)。
QFrame::VLine0x0005绘制一条不包含任何内容的垂直线(用作分隔符)。
QFrame::WinPanel0x0003绘制一个矩形面板,可以像Windows 2000中的面板一样升起或下沉。指定此形状会将线条宽度设置为2像素,提供WinPanel是为了兼容,为了追求GUI风格独立性,建议使用StyledPanel。

当它不调用时由QStyle、Shape相互作用,并与 QFrame::ShadowlineWidth() 和midLineWidth()共同形成结果。

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


enum QFrame::Shape

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

常数描述
QFrame::Shadow_Mask0x00f0frameStyle()中的Shadow 。
QFrame::Shape_Mask0x000fframeStyle() 中的Shape 。

通常不需要使用这两个枚举值,因为 frameShadow() 和 frameShape() 已经提取了  frameStyle()的Shadow 和 Shape 部分。


【属性】

frameRect : QRect

此属性保存框架的矩形。默认情况下,这是整个控件。设置矩形不会 导致控件update。当控件更改大小时,框架矩形会自动调整。

如果将矩形设置为空矩形(例如QRect(0, 0, 0, 0)),则生成的框架矩形等效于widget rectangle

frameShadow : Shadow

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

frameShape : Shape

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

frameWidth : const int

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

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

lineWidth : int

此属性保存线宽。

请注意,用作分隔符 (HLine and VLine) 的框架总线宽由 frameWidth指定。

midLineWidth : int

此属性保留中线的宽度,默认值为 0。

【公有函数】

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

构造框架样式为NoFrame和 1 像素宽度的框架控件。parent 和 参数传递给构造函数。

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重实现QWidget::sizeHint (推荐尺寸函数)。

【受保护的函数】

virtual voidinitStyleOption(QStyleOptionFrame *option) const

option的值初始化QFrame。当子类需要QStyleOptionFrame(绘制框架参数)但不想填写所有信息时很有用。


【重新实现的受保护函数】

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

<<< 返回上一级【QWidget类】

<<< 返回根页面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值