自定义控件的封装-09

关于查阅Qt文档的一些总结
  • Qt文档中所有的类前面都应该有Q前缀,如查阅spinBox控件的使用时,应该在Qt助手 中输入 QSpinBox才能查到。
  • 有些控件本质上属于同一类型,会将几个控件的文档放在一个入口处,单独查某一个会找不到。如Horizontal SliderVertical Slider单独去查都查不到。因为这两个控件都属于Slider,只是一个水平方向,一个竖直方向。因此在Qt助手中需要使用QSlider来进行查找才能找到。
  • 有些控件在Qt助手中无法找到对应的信号和槽函数,此时应该到它的父类中去找。如QSlider中没有对应的信号和槽函数,此时应该到它所继承的父类中去找对应的函数。

封装需要自定义的控件对于很多项目来说有重要的应用价值,具体操作流程如下

一、通过ui文件来添加自定义控件

正常情况下可以通过 代码拖拽 两种方式来对自定义的控件进行ui设计。为了提高效率,一般是通过拖拽 的方式来进行对应的ui设计。

1、添加新文件

在当前项目上右键来添加新文件,选择:Qt------->Qt设计师界面类
在这里插入图片描述
选择空窗口Widget 选项在这里插入图片描述
自定义自己的类名如下,同时会自动生成三个文件,分别为:capsulationwidget.hcapsulationwidget.cppcapsulationwidget.ui

在这里插入图片描述
创建的自定义控件就是在capsulationwidget.ui文件下来进行操作。将需要进行封装的控件拖拽到该ui文件中。
在这里插入图片描述
在这里插入图片描述

2、将需要封装的控件布局到自定义主窗口中

如将:SpinBoxhorizontalSlider这两个控件封装成一个自定义的控件

首先在capsulationwidget.ui文件中将这两个控件拖拽到主窗口中,然后将主窗口capsulationWidget设置成水平布局,再调节主窗口的大小,让其大小和需要的自定义控件大小相等。

在这里插入图片描述


二、使用封装的自定义控件
1、首先切换到 mainwindow.ui 文件中,在该主窗口中将使用以上封装的自定义控件。

先根据封装自定义控件的类型来在mainwindow.ui 文件中拖拽对应的控件,自定义控件的类型为QWidget,如下图所示
在这里插入图片描述

2、在mainwindow.ui 文件中将拖拽的对应控件进行升级

将与自定义类型相同的 Widget 控件拖拽到主窗口中,结果如下图都为QWidget


再来将刚刚拖拽的Widget控件处显示为自定义的控件,从而实现对自定义的控件进行使用。右键该控件,选择 提升为… 选项,如下图

在这里插入图片描述
在弹出的窗口中提升类名称处要输入自定义控件时创建的类名,为了防止输入大小写的错误,可以在capsulationwidget.h文件中的 class 中复制该类名。然后选择添加
在这里插入图片描述
然后选择添加,在弹出的窗口中再选择 提升 ,原先的 QWidget将会变成如下图所示的自定义类名。注意要将该MainWindow进行水平布局,否则运行后界面会挤成一块。

在这里插入图片描述
运行结果如下图所示,两个控件已经进行了组装。但此时右侧的SpinBox中的数据还没有与左侧的滑动条之间建立相互联系。两者只是物理上封装在一起,内在逻辑上仍为相互独立的。
在这里插入图片描述


三、让封装的控件之间相互建立联系

通过代码来在封装的控件之间建立内在的逻辑联系,这个实现的方式是通过槽函数来进行的。具体的实现代码为自定义封装控件的 capsulationwidget.cpp 文件中。

在这里插入图片描述
运行结果如下图所示,改变任意一个控件的数值,另一个就会跟着同步变动。

在这里插入图片描述


四、自定义控件对外提供接口

自定义的控件需要对外提供一些接口,来对其封装的功能进行调用。具体实现过程如下:

1、在对应文件中定义接口函数

(1)、首先需要在自定义控件文件capsulationwidget的头文件 capsulationwidget.h中对接口函数进行声明。由于是对外提供接口,所以接口函数的属性应该为公有性。具体声明如下:

在这里插入图片描述
(2)、具体实现如下:

在这里插入图片描述

2、调用该接口

在主窗口文件中进行调用该接口,如通过点击按钮来实现获取当前数据,及设置数据。
首先在主窗口的ui文件中添加两个按钮控件,然后在代码中来实现调用该接口。

在这里插入图片描述
运行结果如下

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值