QFrame类学习笔记

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);
 
}
 
 
 

效果图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值