关于查阅Qt
文档的一些总结
- 在
Qt
文档中所有的类前面都应该有Q
前缀,如查阅spinBox
控件的使用时,应该在Qt助手 中输入QSpinBox
才能查到。 - 有些控件本质上属于同一类型,会将几个控件的文档放在一个入口处,单独查某一个会找不到。如
Horizontal Slider
和Vertical Slider
单独去查都查不到。因为这两个控件都属于Slider
,只是一个水平方向,一个竖直方向。因此在Qt
助手中需要使用QSlider
来进行查找才能找到。 - 有些控件在
Qt
助手中无法找到对应的信号和槽函数,此时应该到它的父类中去找。如QSlider
中没有对应的信号和槽函数,此时应该到它所继承的父类中去找对应的函数。
封装需要自定义的控件对于很多项目来说有重要的应用价值,具体操作流程如下
一、通过ui
文件来添加自定义控件
正常情况下可以通过 代码 或 拖拽 两种方式来对自定义的控件进行ui
设计。为了提高效率,一般是通过拖拽 的方式来进行对应的ui
设计。
1、添加新文件
在当前项目上右键来添加新文件,选择:Qt
------->Qt设计师界面类
选择空窗口Widget
选项
自定义自己的类名如下,同时会自动生成三个文件,分别为:capsulationwidget.h
、capsulationwidget.cpp
和 capsulationwidget.ui
创建的自定义控件就是在capsulationwidget.ui
文件下来进行操作。将需要进行封装的控件拖拽到该ui
文件中。
2、将需要封装的控件布局到自定义主窗口中
如将:SpinBox
和horizontalSlider
这两个控件封装成一个自定义的控件
首先在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
文件中添加两个按钮控件,然后在代码中来实现调用该接口。
运行结果如下