QFrame类

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

 *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类】

<<< 返回根页面

Qt笔记】QFrame控件详解 QFrameQt框架中一个重要的控件,主要用于在图形用户界面(GUI)中创建具有边框的框架。它不仅提供了丰富的边框样式、阴影效果和线宽设置,还允许开发者通过子化来创建自定义的框架样式。 阅读详情

相关推荐

QT6学习第八天 QFrame

QAbstractSpinBox 时一个抽象基,提供了一个数值设定框和一个行编辑器来显示设定值。它有三个子,QDateTimeEdit、QSpinBox、QDoubleSpinBox,分别用来完成日期时间、整数和浮点数的设定。创建一个Qt Widget 项目,命名myspinbox,基为 QWidget,名MyWidgetQDateTimeEdit提供了一个可以编辑日期和时间的部件。

qq_15409121的博客 1442

Qt基础控件篇:QFrame框架

在主程序中创建了一个QWidget并在其中添加了一个带有文本的QLabel和一个我们自定义的带有阴影效果的QFrame。掌握了QFrame的使用方法,可以为我们的Qt界面开发提供更多的样式和风格选择,大大丰富了我们的页面布局设计。QFrame是具有框架的小部件的基,例如QLabel、QTextEdit等,这些直接或间接继承QFrame,都拥有框架。QFrame是一个在Qt的界面开发中非常重要的控件,它作为许多基础控件的基,提供了丰富的成员方法给子,可以很方便地实现子的框架样式的设计。

. 3379

第二十九章、containers容器部件QFrame框架部件详解

一、概述 容器部件就是可以在部件内放置其他部件的部件,在Qt Designer中可以使用的容器部件有如下: 容器中的Frame为一个矩形的框架对象,对应QFrameQFrame是PyQt中带框架部件的所有的基,如菜单、进度条、Label标签等。QFrame除了派生子外,也可以直接用于创建没有任何内容的简单占位符框架,用于占用一部分空间。 二、属性和方法 QFrame的方法和基本都是...

老猿Python 2980

QFrame分析

1 QFrame描述 QFrame是基本控件的基,QWidget是QFrame,实质上就是在widget的基础上多做了一些工作,如拓展了一些样式阴影等显示美化功能,然后封装为QFrame。 2 QFrame继承 它是继承QWidget ,所以它是可直接直接展示的。 继承关系如下: QPushButton,QLabel… (常使用控件)——> QFrame ——> QWidget。 而Qwidget又继承于:QtCore、QObject以及QtGui、QPaintDevice。 Q

weixin_42887343的博客 9386

Qt—常用窗口部件

Qt—常用窗口部件 QFrameQFrame基本属性概述 QFrame是带有边框的部件的基。它的子有我们最为常用的标签部件QLabel,另外还有QLCDNumber、QSplitter、 QStackedWidget、QToo1Box和QAbstractScrollArea。 QAbstractScrollArea是所有带有滚动区域的部件的抽象基。 QAbstractScrollArea的子中有最常用的QTextEdit和各种项目视图 QT中凡是带有Abstract字样的

Half-up的博客 3230

QFrame学习笔记  

QFrame学习笔记 参考:https://wenku.baidu.com/view/759c1af565ce050877321322.html https://doc.qt.io/qt-5/qframe.html 1、QFrame的作用 QFrame继承于QWidget,被QAbstractScrollArea, QLabel, QLCDNumber, QSplitter, QStackedWidget, an...

yq327115059的博客 4103

QFrame的使用

今天在写一个程序的时候需要使用QFrame,在这里总结一下常用的用法。 为什么要总结这个呢?虽然可以随用随查文档,但是当你真正写代码的时候,是很难沉浸下来好好研究文档的,所以我趁现在有时间好好学一下这个框架 这也是一个窗口框架,他的父是QWidget。 setFrameShape(QFrame::Shape) 这个函数的功能是设置窗体的形状,其中的QFrame::Shape有一下几种 一共七种形状可以设置,在这七种形状之外,还有三种阴影 setFrameShadow(QFrame::Shadow) 这个

qq_27168967的博客 1986

Qt QFrame

QFrame是带有边框的部件的基。它的子包括最常用的标签部件QLabel,另外还有QLCDNumber,QSplitter,QStackedWidget,QToolBox和QAbstractScrollArea。QAbstractScrollArea是说有带有滚动区域的部件的抽象基,这里需要说明,Qt中凡是带有Abstract字样的都是抽象基。抽象基是不能直接使用的,但是可以继承该实现自己的,或者使用它提供的子。QAbstractScrollAread的子中有最常用的文本编辑器

灰猫丫的博客 1580

QTQFrame的使用

详细说明 QFrame是可以具有框架的窗口小部件的基。 QMenu使用它来“提升”周围屏幕上方的菜单。 QProgressBar具有“下沉”外观。 QLabel外观平整。这样的小部件的框架可以更改。 QLabel label(...); label.setFrameStyle(QFrame::Panel | QFrame::Raised); label.setLineWidth(2); QProgressBar pbar(...); label.setFrameStyle(QFra

希望我的博客,能帮上你解决学习中工作中所遇到的问题 5836

QT QFrame

QFrame没有特定的功能或行为,而是提供了一种通用的方式来进行定制化的图形布局。而midLineWidth是在边框中额外插入的一条线的宽度,这条线的作用是为了形成3D效果,并且只在Box,Hline和 VLine表现为凸起或者凹陷时有用。带边框部件最主要的特点就是可以有一个明显的边界框架。抽象基是不能直接使用的,但是可以继承该实现自己的,或者使用它提供的子。frameShape: 设置框架的形状和样式,如边框、阴影和凹陷效果等。QFrame是带有边框的部件的基。它的子包括最常用的标签部件。

2301_79503228的博客 604

QT 108好》之5 QFrame

本文介绍了Qt框架中的QFrame,这是一个继承自QWidget的基础控件,主要用于为其他控件提供框架样式和容器功能。QFrame支持多种边框样式(如无边框、矩形、面板等)、阴影效果(平面、凸起、凹陷)和线宽设置,还可作为分隔线使用。文章详细说明了QFrame的继承关系、主要特性、常用成员函数(如设置框架形状、阴影效果等)和实际应用示例,包括作为容器、分隔线以及自定义绘图等场景,并附有结果展示图。QFrame是构建Qt界面时常用的基础控件之一。

qq_43550409的博客 427

QT学习:QFrame

QFrame是带有边框的部件的基,它的子有最为常用的标签部件QLabel,另外还有QLCDNumber,QSplitter,QStackedWidget,QToolBox和QAbstractScrollArea,QAbstractScrollArea所有带有滚动区域的部件的抽象基,这里需要说明的是在QT中带有Abstract字样的都是抽象基。 带边框部件最主要的特点就是可以有一个明显的边界框架。QFrame的主要功能也就是用来实现不同的边框效果,lineWidth是边框边界的线得宽度,

w0131的博客 1518

17 QFrame

QFrame是具有框架的小部件的基。 QMenu使用它将菜单“提升”到周围屏幕的上方。QProgressBar有一个“凹陷”的外观。QLabel有一个扁平的外观。可以更改这些小部件的框架。 QLabel label(...); label.setFrameStyle(QFrame::Panel | QFrame::Raised); label.setLineWidth(2); QProg...

QtHalcon 418

使用QFrame实现界面美化

我们只需要在ui文件中添加一个QFrame控件,然后在代码中设置它的属性即可。接着,我们就可以使用QFrame的一些函数来设置框架的属性了。在Qt中使用QFrame非常简单,我们只需要在ui文件中拖动一个QFrame控件并在代码中设置它的属性即可。然后,在ui文件中拖动一个QFrame控件,并给它一个objectName,例如我们命名为"myFrame"。QFrameQt框架中用于创建和显示矩形框架的基本组件,它可以用于美化界面、分割界面等多种场景。使用QFrame实现界面美化。

pytorchCode的博客 667

Qt开发】容器框架QFrame详解及实战应用

QFrame 是一个功能强大的 Qt 基础,它为我们提供了一个带有边框和阴影效果的容器,可以极大地提升我们的界面设计灵活性和美观度。通过对 QFrame 的深入剖析和实际代码示例,掌握了其常用方法和高级技巧,可以更好地利用它来构建复杂的用户界面。

科技改变人类,技术成就未来 1769

PySide2使用QFrame

QFrame QFrame 继承自 QWidget,它的主要作用时用来控制一些边框的样式,例如凸起,凹下,阴影,线宽等。 QFrame.shape 框架形状 QFrame.NoFrame 不显示形状 QFrame.Box QFrame 围绕其内容绘制一个框 QFrame.Panel QFrame绘制一个面板,使其内容显得突起或凹陷 QFrame. HLine 水平分割线 QFrame.VLine 垂直分割线 QFrame.StyledPanel 绘制一个矩形面板, 其外

weixin_39868379的博客 1521
上一篇: QTreeWidgetItem类
下一篇: QWidgetItem类
floatbit
博客等级 码龄24年 460粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值