qt常用控件--03
文章目录
- qt常用控价
- 按钮类控件
- QRadioButton
- 关于信号的补充
- QCheckBox
- 显示类控件
- label
- 结语
很高兴和大家见面,给生活加点impetus!!开启今天的编程之路!!
今天我们进一步c++11中常见的新增表达
作者:٩( ‘ω’ )و260
我的专栏:qt,Linux,C++进阶,C++初阶,数据结构初阶,题海探骊,c语言
欢迎点赞,关注!!
qt常用控价
按钮类控件
QRadioButton
该属性是一个单旋按钮,默认是具有排他机制的
同样的,作为QWidget和QAbstractButton的子类,前面所提到的属性QRadioButton都是可以使用的。
api接口:
我们使用代码示例:
为什么我们这里的信号使用的是clicked(bool)而非clicked()信号呢?
因为在QRadioButton中,有一个checkable属性,我们使用带参数的点击信号就可以获取到checkable的状态。
当控件中含有checkable接口时,使用点击按钮会使用带参数的,如QRadioButton,反之,使用无参数的,如QPushButton
我们来看现象:
当我们选择一个的时候,先前我们选择的一个QRadioButton就会被默认取消,即除选择之外的QRadioButton,其他的QRadioButton的checkable就会直接设置为false,所以这种按钮只能是单选按钮~~
我们再来优化一下,即当我们刚好运行程序的时候,我们设置默认性别为男性,因为这个不是一个函数,所以肯定是需要在Widget的构造函数中完成的。
来看代码:
我们再来讲解一个案例,比如我模拟一个点餐系统:
此时我选择了米饭,但是选择蔬菜的时候,之前米饭的选择就不在了,是因为QRadioButton的排他机制。那么该如何解决呢?
在界面上,我们只希望米饭的两个对象具有排他机制,蔬菜的两个对象具有排他机制,即米饭和蔬菜之间没有排他机制。
我们需要使用QButtonGroup来对按键进行分组:
细节:QButtonGroup我们需要放到对象树中,即我们需要在堆上创建QButtonGroup
再来看结果:
如果我们就直接删除一个按键,即我们将这个QRadioButton的checkable设置成false。
结论:此时我们无法点击这个按钮,但是这个按钮仍然可以响应信号~~
我们来看结果:
按钮无法被选中,所以checked一直都是false,但是信号可以被执行。
关于信号的补充
前面我们认识了clicked(bool)信号,我们也一并将剩余几个信号来讲解一下:
接下来我们来书写代码:
通过通过打印日志以及对四个按钮进行操作来观察:
QCheckBox
前面我们讲到QRadioButton具有排他属性,是单选按钮,但是,在生活中我们肯定也会见到多选按钮,使用
qCheckBox就能够达到这样的效果:
QCheckBox继承QAbstractButton和QWidget,所以前面所提到的QWidget属性在QCheckBox中仍然是可以使用的~~
api接口:含有checkable和checked接口,所以点击操作需要使用带参数的clicked
我们直接来看示例代码:
当然,也可以在点击(修改checkBox状态)的时候直接就修改label的文本了~~
显示类控件
label
我们先来介绍与label相关的接口,随后我们对于每个属性给出对应的代码示例说明:
这里我直接给出表格:
对于text属性我们已经比较了解了。
接下来我们来介绍textFormat属性:
我们现在给对应属性的文本添加上html标签和markdown标签:
接下来我们来介绍pixMap和scaledContents属性:
我们先把一张滑稽图片给加载到Label中,仍然是使用qrc机制:
这里我们创建跟Widget一样大的Label,这样就能够拉伸填满了:
接下来我们来拉伸这张图片,让他填满整个Label,此时也会填满整个Widget:
此时我们对Widget这个面板进行resize操作:
此时我们发现,当我们拖动Widget这个面板的时候,面板确实扩大了,但是我们的滑稽并没有扩大。如何让面板扩大的同时,能让滑稽也扩大呢?
首先,我们在拖动我们的Widget窗口面板时,不是一下就拖动过去的,而是你移动一点,整个界面就只动一点,不是说一下就闪过去,整个界面就直接缩小了~~
首先用户对Widget的操作,会对应一些信号。
表示用户的操作,有两类概念:一种是信号,一种是事件~~
当用户拖拽窗口的时候,就会出发resize事件,而像resize这样的时候,是连续触发的,在窗口大小a到b的过程中,会调用很多次resize函数,我们也使用这个原理,来对滑稽图片大小进行改写
在改写图片大小的时候,每一次图片大小肯定都是不一样的,所以,我们必须对resize函数进行重写~~
补充知识点:指定回调函数的方法:函数指针,仿函数,lambda表达式,多态(重写父类虚函数),qt信号槽(connect)
来看代码:
函数定义:
其中QResizeEvent中有一个很重要的东西,包含了触发resize这一事件的时刻,此时窗口的大小
我们运行代码来看缩放界面的效果~~
当我们不断移动界面的时候,下方会不断地打印出日志。此时,说明Widget界面大小在不断的更新,qt在不断调用这个重写函数。
由于Widget在不断更新,我们使用新的位置来更新滑稽图片即可:
来看最终的定义:
这样就能够完成当Widget界面缩放的时候,我们的滑稽图片也一直在缩放~~
结语
今天的内容就分享到这里,不足之处欢迎留言指出,感谢大家支持!!
骐骥一跃,不能十步;驽马十驾,功在不舍!!