一、自定义控件的封装
在使用Qt的ui文件搭建界面的时候,工具栏栏中只为我们提供了标准的窗口控件,如果我们想使用自定义控件怎么办?需要我们自己去封装
1.SpinBox 和 HorizontalSlider 结合使用
1.1 目标效果
SpinBox 和 HorizontalSlider 结合使用,我们希望左边的部件数值发生变化,右边的部件也能一起发生移动;右边的部件移动,左边部件的数值也发生变化。
2. 封装步骤
2.1 在项目中添加新Qt设计师界面类文件
(1)
(2)
(3)添加好了新文件后,就会看到:
2.2 进入设计控件的UI界面
(1)在 SmallWideget.ui 中将要封装的部件拖拽到本文件窗口,然后做好水平布局,接着裁剪大小。
SmallWideget.ui文件和对应的窗口是给我们自定义控件使用的,要和项目的 widget.ui 文件分清。相当于就是一个蛋糕店,有做蛋糕的厨房(smallwidget.ui),有展示蛋糕的展厅(widget.ui)。smallwidget.ui 是做控件给 widget.ui 使用的。为了方便说明,在下面的文章中,我会将smallwidget.ui 称为做控件界面,widget.ui 称为使用控件界面。
2.3 使用控件界面使用自定义控件
如果控件被制作出来了,还有一个问题,在其他的界面如何使用?
(1)要知道制作的控件是属于哪个类,现在制作的控件是属于Qwidget 类。
(2)在使用自定义控件的界面给自定义控件,预留空间。使用和自定义控件属于同一个类的控件去占空间。
自定义控件是属于 QWiget 类的,那么在使用控件的界面中就用 Widget 这个控件去占位置:如果自定义的控件做好了,就直接放到预留的空间那里就行。
注意要属于同一个类的,才能帮占位置。就有点像 上课一样,叫本班同学帮占位置。
(3)还要将占位置的控件提升为自定义控件的类,然后点击添加:(这个就相当于你说明这个位置是帮谁占的。)
还有一个要注意的地方,这里使用的是全局包含。
(4)运行使用控件界面,就会出现自定义的控件:(就相当于,占座的人过来上课了)
2.4 在制作控件的文件中完善控件的功能
(1)完成 SpinBox 数值变化,水平滑块移动。SpinBox 和水平滑块是两个对象,也是要使用 connect 函数联系起来。
信号发出者是 SpinBox ,那么要知道 SpinBox 发出什么信号才能够满足需求。SpinBox 的主要作用是值发生变化,查看帮助文档 SpinBox 中也存在这个函数:
(2)当值发生变化,就会发出信号,这个函数有重载,所以需要用到函数指针。
(3)右侧滚动,左侧数值发生变化:
二、常用的鼠标事件
1.捕获鼠标进入或者离开Label区域
(1)新建 class 文件,要新建一个MyLabel 类,在Label 类的基础上增加新的功能。
(2)修改继承的类和包含的头文件,Mylabel 类继承 QLabel 类: