QFrame类学习笔记

news2024/12/28 19:04:40

1、QFrame的作用

       QFrame类继承于QWidget类,被QAbstractScrollArea, QLabel, QLCDNumber, QSplitter, QStackedWidget, and QToolBox等类继承。 QFrame作为许多基础控件的基类,提供许多成员方法给子类,实现子类的框架样式的设计。框架样式主要由框架形状和用于从视觉上将框架与周围的小部件分开的阴影样式组成。即

  1. QFrame为子类提供了设计框架风格的成员函数,帮助子类设计特有的风格:或边框突起、或边框凹陷、或内容突起、或内容凹陷等效果。
  2. QFrame还可以直接用于创建不包含任何内容的简单占位符框架。

2、QFrame的成员类型文档

     2.1 enum QFrame::Shadow   

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

QFrame::Plain0x0010边框或内容与周围控件看起来一样高
QFrame::Raised0x0020边框或内容比周围控件看起来突起
QFrame::Sunken0x0030边框或内容比周围控件看起来凹陷

     2.2 enum QFrame::Shape

                这个enum类型定义了可用帧的形状。

QFrame::NoFrame不画任何内容
QFrame::Box0x0001画一个边框将内容包起来,凸显边框的阴影效果
QFrame::Panel0x0002画一个内容平面,凸显内容的阴影效果
QFrame::StyledPanel0x0006绘制一个外观取决于当前GUI样式的矩形面板。它可以突起也可以凹陷。
QFrame::HLine0x0004绘制一条水平线,起分隔作用,凸显线的阴影效果
QFrame::VLine0x0005绘制一条竖线,起分隔作用,凸显线的阴影效果
QFrame::WinPanel0x0003绘制一个矩形面板,可以像Windows 2000那样向上或向下移动。指定此形状将线宽设置为2像素。WinPanel是为了兼容而提供的。

 对 于GUI风格的独立性,我们建议使用StyledPanel代替。

   2.3 enum QFrame::StyleMask

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

QFrame::Shadow_Mask0x00f0控件的framStyle()返回值的shadow部分
QFrame::Shape_Mask0x000f控件的framStyle()返回值的shape部分

   2.4 使用QFrame可实现的样式组合

3、QFrame常用成员函数

     3.1 成员函数原型介绍

 

成员函数原型 描述
QFrame(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())构造函数
virtual   ~QFrame()     析构函数
 QRect frameRect() const       获取QFrame的框架大小
void setFrameRect(const QRect &)设置QFrame的框架大小
QFrame::Shadow  frameShadow() const获取阴影样式,
void setFrameShadow(QFrame::Shadow)设置阴影样式,
QFrame::Shape  frameShape() const获取框架的形状
void setFrameShape(QFrame::Shape)设置框架的形状
int  frameStyle() const获取框架的形状和阴影样式
void setFrameStyle(int style)设置框架的形状和阴影样式
int lineWidth() const获取框架线的宽度
 void setLineWidth(int)设置框架线的宽度
int midLineWidth() const获取框架中线的宽度
void setMidLineWidth(int)设置框架中线的宽度

   3.2 简单示例

       使用QFrame的子类QLabel完成简易登陆界面的设计,通过对QLabel框架样式的改变使其更符合QLineEdit、QPushButton等控件的风格。

 

//.h文件
 
class Widget : public QWidget
{
    Q_OBJECT
 
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
private:
 
    QLabel *useLabel;
    QLabel *pwLabel;
    QLabel *useEdit;
    QLabel *pwEdit;
    QLabel *checkBtn;
    QLabel *cancelBtn;
 
};
 
//.c文件
 
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    this->resize(400,550);
    useLabel = new QLabel(this);
    useLabel->setText("用户名:");
    useLabel->move(70,150);
    useLabel->resize(50,30);
    //设置"用户名"标签的框架样式为 无边框+无阴影
    useLabel->setFrameShape(QFrame::NoFrame);
    useLabel->setFrameShadow(QFrame::Plain);
 
    useEdit = new QLabel(this);
    useEdit->move(150,150);
    useEdit->resize(200,30);
    //设置"用户名"输入框的框架样式为 边框+突起
    useEdit->setFrameStyle(QFrame::Box|QFrame::Raised);
    useEdit->setLineWidth(2);
 
 
    pwLabel = new QLabel(this);
    pwLabel->setText("密码:");
    pwLabel->move(70,210);
    pwLabel->resize(50,30);
    //设置"密码"标签的框架样式为 无边框+无阴影
    pwLabel->setFrameStyle(QFrame::NoFrame|QFrame::Plain);
 
    pwEdit = new QLabel(this);
    pwEdit->move(150,210);
    pwEdit->resize(200,30);
    //设置"用户名"输入框的框架样式为 内容+凹陷
    pwEdit->setFrameStyle(QFrame::Panel|QFrame::Sunken);
    pwEdit->setLineWidth(2);
 
    checkBtn = new QLabel(this);
    checkBtn->setText("确认");
    checkBtn->setAlignment(Qt::AlignCenter);
    checkBtn->move(100,290);
    checkBtn->resize(80,30);
    //设置"确认"按钮的框架样式为 内容+突起
    checkBtn->setFrameStyle(QFrame::Panel|QFrame::Raised);
    checkBtn->setLineWidth(3);
 
 
    cancelBtn = new QLabel(this);
    cancelBtn->setText("取消");
    cancelBtn->setAlignment(Qt::AlignCenter);
    cancelBtn->move(240,290);
    cancelBtn->resize(80,30);
    //设置"取消"按钮的框架样式为 内容+突起
    cancelBtn->setFrameStyle(QFrame::Panel|QFrame::Raised);
    cancelBtn->setLineWidth(3);
 
}
 
 
 

效果图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1044156.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android 13 定制化开发--开启相机或麦克风时,去掉状态栏上的绿色图标

Android 12 或更高版本的设备上,当应用使用麦克风或相机时,图标会出现在状态栏中。如果应用处于沉浸模式,图标会出现在屏幕的右上角。用户可以打开“快捷设置”,并选择图标以查看哪些应用当前正在使用麦克风或摄像头。图 1 显示了…

Ubuntu 安装Kafka

在本指南中,我们将逐步演示如何在 Ubuntu 22.04 上安装 Apache Kafka。 在大数据中,数以百万计的数据源生成了大量的数据记录流,这些数据源包括社交媒体平台、企业系统、移动应用程序和物联网设备等。如此庞大的数据带来的主要挑战有两个方面…

【数据结构】插入排序:直接插入排序、折半插入排序、希尔排序的学习知识总结

目录 1、排序的基本概念 2、直接插入排序 2.1 算法思想 2.2 代码实现 3、折半插入排序 3.1 算法思想 3.2 代码实现 4、希尔排序 4.1 算法思想 4..2 代码实现 1、排序的基本概念 排序是将一组数据按照预定的顺序排列的过程,排序的基本概念包括以下内容…

自学WEB后端01-安装Express+Node.js框架完成Hello World!

一、前言,网站开发扫盲知识 1.网站搭建开发包括什么? 前端 前端开发主要涉及用户界面(UI)和用户体验(UX),负责实现网站的外观和交互逻辑。前端开发使用HTML、CSS和JavaScript等技术来构建网页…

数据结构--快速排序

文章目录 快速排序的概念Hoare版本挖坑法前后指针法快速排序的优化三数取中法小区间用插入排序 非递归的快速排序 快速排序的概念 快速排序是通过二叉树的思想,先设定一个值,通过比较,比它大的放在它的右边,比它小的放在它的左边…

Python中的数据常见问题

数据可视化在Python中是一个非常重要的主题,它可以帮助我们更好地理解和分析数据。无论是探索数据的特征,还是向其他人展示数据的结果,数据可视化都起到了关键作用。然而,在进行数据可视化时可能会遇到一些常见问题。本文将为您分…

基于微信小程序的同城家政服务预约系统(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

DC电源模块关于宽电压输入和输出的范围

BOSHIDA DC电源模块关于宽电压输入和输出的范围 DC电源模块是一种电子设备,能够将输入的直流电源转换成所需的输出电源,用于供电各种电子设备。其中,关于宽电压输入和输出的范围,是DC电源模块常见的设计要求之一。本文将详细介绍…

嵌入式Linux应用开发-基础知识及GCC 编译器的使用

嵌入式Linux应用开发-基础知识及GCC 编译器的使用 第一章 HelloWorld 背后没那么简单1.1 交叉编译 hello.c1.2 请回答这几个问题1.3 演示 (...) 第二章 GCC 编译器的使用2.1 配套视频内容大纲2.1.1 GCC 编译过程(精简版)2.1.2 常用编译选项2.1.3 怎么编译多个文件2.1.4 制作、使…

深度学习:模型训练过程中Trying to backward through the graph a second time解决方案

1 问题描述 在训练lstm网络过程中出现如下错误&#xff1a; Traceback (most recent call last):File "D:\code\lstm_emotion_analyse\text_analyse.py", line 82, in <module>loss.backward()File "C:\Users\lishu\anaconda3\envs\pt2\lib\site-packag…

【Unity】LODGroup 计算公式

Unity 在配置 LodGroup 时&#xff0c;其分级切换的计算方法是按照物体在相机视野中占据的比例计算的。在运行时&#xff0c;如果相机视野范围&#xff08;Field of View&#xff09;没有改变&#xff0c;那么这个值可以直接换算成物体距离相机的距离。这里就讨论下如何计算得到…

ubuntu下用pycharm专业版连接AI服务器及其docker环境

一&#xff1a;用pycharm专业版连接AI服务器 1、首先在自己电脑上新建一个文件夹&#xff0c;后续用于映射服务器上自己所要用的项目文件 2、用pycharm专业版打开该文件夹&#xff0c;作为一个项目打开 3、然后在工具->部署->配置 4、配置中形式如下&#xff1a; 点击左…

Chatbot UI集成LocalAI实现自托管的ChatGPT

本文比惯例提前了一天发&#xff0c;因为明天一早&#xff0c;老苏就踏上回乡的路了&#xff0c;三年没回老家&#xff0c;这次专门请了 2 天的假 难得回家&#xff0c;打算多陪陪家人&#xff0c;和多年不见的朋友聚聚&#xff0c;当然如果有网络条件&#xff0c;还是会正常发…

英语单词记忆学习打卡系统 微信小程序

本单词记忆系统使用了计算机语言Java和存放数据的仓库MySQL&#xff0c;采用了微信小程序模式来实现。本系统使用了框架SSM和Uni-weixin实现了单词记忆系统应有的功能&#xff0c;系统主要角色包括管理员和用户。 关键词&#xff1a;Java&#xff1b;MySQL&#xff1b;SSM  在…

Unity实现设计模式——命令模式

Unity实现设计模式——命令模式 推荐一个Unity学习设计模式很好的GitHub地址&#xff1a;https://github.com/QianMo/Unity-Design-Pattern 有非常多的Star 一、介绍 命令模式使得请求的发送者与请求的执行者之间消除耦合&#xff0c;让对象之间的调用关系更加灵活。在命令模…

聊聊零拷贝技术原理和应用

文章目录 0. 引言1. 什么是零拷贝技术 1. 零拷贝技术在不同领域的应用2.传统拷贝技术的缺点3. 零拷贝技术的原理与实现1. sendfile系统调用2. 内核缓冲区与用户缓冲区3. DMA&#xff08;Direct Memory Access&#xff09;技术4. 文件描述符传递与共享5. Direct I/O&#xff08;…

Apache shiro RegExPatternMatcher 权限绕过漏洞 (CVE-2022-32532)

漏洞描述 2022年6月29日&#xff0c;Apache 官方披露 Apache Shiro &#xff08;CVE-2022-32532&#xff09;权限绕过漏洞。 当Apache Shiro中使用RegexRequestMatcher进行权限配置&#xff0c;且正则表达式中携带"."时&#xff0c;未经授权的远程攻击者可通过构造恶…

基于Springboot实现毕业生信息招聘平台管理系统演示【项目源码+论文说明】分享

基于Springboot实现毕业生信息招聘平台管理系统演示 摘要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 毕业生信息招聘平台&#xff0c;主要的模块包括查看管理员&#xff1b;首页、个人中心、企…

Nginx 可视化管理工具与 cpolar 配置:实现远程访问本地服务的优化

文章目录 前言1. docker 一键安装2. 本地访问3. Linux 安装cpolar4. 配置公网访问地址5. 公网远程访问6. 固定公网地址 前言 Nginx Proxy Manager 是一个开源的反向代理工具&#xff0c;不需要了解太多 Nginx 或 Letsencrypt 的相关知识&#xff0c;即可快速将你的服务暴露到外…