QT中的常用控件 (二)

目录

[1. 按钮类控件](#1. 按钮类控件)

[1.1 QPushButton](#1.1 QPushButton)

[1.2 QRedioButton](#1.2 QRedioButton)

[1.3 QCheckBox](#1.3 QCheckBox)

2.显示类控件

[2.1 QLabel](#2.1 QLabel)

[2.2 QLCDNumber](#2.2 QLCDNumber)

[2.3 QProgressBar](#2.3 QProgressBar)

[2.4 QCalendar](#2.4 QCalendar)


1. 按钮类控件

在QT中的按钮控件都继承于QAbstractButton,例如QPushButton,QCheckBox。QAbstractButton是一个抽象类,只提供给它的子类使用相应的功能。

在QtDesiner中也能看到控件的继承关系。

1.1 QPushButton

在QAbstractButton中与QPushButton比较相关的属性有以下几种:

text:按钮中的文本 icon:按钮中的图标

iconSize:按钮中图标的尺寸 shortCut:按钮对应的快捷键

autoRepeat:按钮是否会重复触发 autoRepeatDelay:重复触发的延迟时间

autoRepeatInterval:重复触发的周期

上面的属性都是QPushButton继承于QAbstractButton的,自身提供的属性都比较简单。

1.demo1带有图标的按钮

1)首先创建一个qrc管理图片

2)将图标设置进按钮中

2.demo2设置按钮快捷键控制target按钮

1)首先在UI页面中创建一个target按钮和四个方向键按钮

2)设置各个按钮的图片

3)编写控制按钮的槽函数

4)在构造函数中设置各个按钮的快捷键

可以直接使用QKeySequence(按键名)的方式设置快捷键,也可以使用Qt自带的枚举类,更推荐这种方式,写错了会有报错。这里的快捷键可以是单个按键,也可以是组合键。

5)最终效果

需要注意的是,在代码中并没有设置按钮的连点效果,因为设置快捷键是默认支持连点的。如果想要点击按钮也支持连点的效果,可以将按钮的autoRepeat设置为true。

1.2 QRedioButton

QRedioButton是单选按钮,让我们在多个选项中选择一个。

作为QAbstractButton的子类,以下这些属性是与QRedioButton联系比较大的:

checkable:能否被选中。 checked:是否被选中。

autoExclusive:排他性,即选了一个按钮取消其他按钮的选中,QRedioButton默认是排他的。

1.demo1性别选择

1)在UI界面创建三个单选按钮以及一个文本框

2)初始化按钮和编辑槽函数

3)测试效果

可以看到这里的按钮都是有排他性的,并且其他按钮虽然无法选择,但是对应槽函数还可以触发,如果真的想禁用一个按钮,应该使用setEnable。

2.demo2了解QRedioButton四种信号触发

1)UI界面创建四个单选按钮和一个点击按钮

2)编辑槽函数

3)测试效果

(1)默认点击按钮1显示clicked:true表示按钮被选中

(2)点击切换可用状态再点击按钮1显示clicked:false表示按钮未选中

(3)按下按钮2显示press表示按压按钮

(4)按下再松开显示release表示松开按钮

(5)点击按钮4显示toggled:true表示切换到按钮4

(6)点击其他按钮显示toggled:表示此时没有点击按钮4,按钮4的状态切换

  1. demo3模拟点单页面

1)在UI界面创建四个单选框和两个文本框。

2)使用QButtonGroup对按钮进行两两分组,使按钮在组中才有排他性,对其他组的按钮不产生影响。

3)编写槽函数

注意这里选择的都是clicked(bool checked)的槽函数。当按钮的可选状态被禁用无法触发该函数。

4)测试效果

1.3 QCheckBox

QCheckBox是QT中的复选框按钮。

  1. demo1今晚吃什么

1)UI界面创建三个复选框,一个文本框以及一个点击按钮

2)编写槽函数

这里的不吃了按钮应该与其他两个按钮是排斥的,所以在在对应槽函数中将其他组合的按钮的选中状态修改为false,就能表现出类似单选按钮的排他性了。

3)测试效果

2.显示类控件

2.1 QLabel

QLabel可以用来显示文本和图片。

QLabel的相关属性:

text :QLabel 中的⽂本
textFormat:⽂本的格式
Qt::PlainText: 纯⽂本 Qt::RichText 富⽂本(⽀持 html 标签) Qt::MarkdownText markdown 格式
Qt::AutoText:根据⽂本内容⾃动决定⽂本格式
pixmap:QLabel 内部包含的图⽚
scaledContents:设为 true 表⽰内容⾃动拉伸填充 QLabel ,设为 false 则不会⾃动拉伸
alignment:对⻬⽅式可以设置⽔平和垂直⽅向如何对⻬
wordWrap:设为 true 内部的⽂本会⾃动换⾏,设为 false 则内部⽂本不会⾃动换⾏
indent:设置⽂本缩进. ⽔平和垂直⽅向都⽣效
margin:内部⽂本和边框之间的边距不同于于 indent, 但是是上下左右四个⽅向都同时有效。⽽indent 最多只是两个⽅向有效(具体哪两个⽅向有效取决于 alignment )
openExternalLinks:是否允许打开⼀个外部的链接(当 QLabel ⽂本内容包含 url 的时候涉及到)
buddy:给 QLabel 关联⼀个 "伙伴" , 这样点击 QLabel 时就能激活对应的伙伴例如伙伴如果是⼀个 QCheckBox, 那么该 QCheckBox 就会被选中

1.demo1显示不同格式的文本

1)在UI界面创建三个Label标签

2)单独设置每个Label标签的文本属性

3)测试效果

2.demo2显示图片

1)创建一个label标签并设置图片

此时可以看到确实是设置了一个铺满整个窗口的图片,但是一旦我们拉动窗口的时候label的大小是不会变化的,也就是说在构造函数设置的label大小是一次性的,如果想实现图片随着窗口大小变化,那么就需要在拉动窗口的时候对label大小作出调整。

2)重写resizeEvent

当拉动窗口的时候会触发resizeEvent,我们可以对这个事件进行重写,在其中来修改label的大小,就能使label的大小随着窗口改变而发生变化。

3)实际效果

此时图片可以随着窗口的变化而变化

3.demo3文本属性

1)创建四个label标签

2)设置不同的文本格式

3)测试效果

2.2 QLCDNumber

QLCDNumber是一种专门用来在LCD屏幕上显示数字的控件。

核心属性:

intValue : QLCDNumber 显示的数字值(int).
value : QLCDNumber 显示的数字值(doubel). 这个属性与intValue是联动的,假如给value设置的值是2.5,用intValue获取到的就是3.

设置 value 和 intValue的方法都是display.
digitCount : 显示几位数字
mode : 数字的显示形式, 通常有 Dec,Hex,Bin,Oct四种进制
segmentStlye : 设置显示的风格
smallDecimalPoint : 设置比较小的小数点

1.demo1倒计时

1)在UI界面创建一个QLCDNumber

2)设置控件初始值与使用定时器QTimer对象的信号槽机制

3)编写槽函数的倒计时逻辑

4)测试效果

2.3 QProgressBar

这个控件用于创建一个进度条。

核心属性:

minimun : 进度条的最小值,默认0.
maximun : 进度条最大值,默认100.
value : 进度条当前值
aligment : 文本在进度条中的对齐方式,默认右对齐.
textVisible : 进度条文字是否可见,默认可见.
orientation : 进度条的方向是水平还是垂直,默认水平.
textDirection : 文本朝向
format : 展示数字的形式

1.demo1创建一个进度条

1)在UI界面设置一个QProgressBar控件

2)编写进度定时增长的逻辑代码

这里在进度超过100以后进行矫正,防止出现大于100但是设置不进来的情况,也就会导致最后卡在99或者别的数字.

3)测试效果

2.4 QCalendar

QCalendar表示一个日历.

核心属性:

selectDate: 当前选中的⽇期
minimumDate : 最⼩⽇期
maximumDate : 最⼤⽇期
firstDayOfWeek : 每周的第⼀天(也就是⽇历的第⼀列) 是周⼏
gridVisible : 是否显⽰表格的边框
selectionMode : 是否允许选择⽇期
navigationBarVisible : ⽇历上⽅标题是否显⽰
horizontalHeaderFormat : ⽇历上⽅标题显⽰的⽇期格式
verticalHeaderFormat : ⽇历第⼀列显⽰的内容格式
dateEditEnabled : 是否允许⽇期被编辑

重要信号:

selectionChanged(const QDate&) : 当选中的⽇期发⽣改变时发出
activated(const QDate&) : 当双击⼀个有效的⽇期或者按下回⻋键时发出,形参是⼀个QDate类型,保存了选中的⽇期
currentPageChanged(int,int) : 当年份⽉份改变时发出,形参表⽰改变后的新年份和⽉份

1.demo1获取选择的日历

1)创建一个日历和Label

2)编写发出信号时selectionChanged需要执行的槽函数

3)测试效果

相关推荐
ytttr8736 小时前
隐马尔可夫模型(HMM)MATLAB实现范例
开发语言·算法·matlab
天远Date Lab6 小时前
Python实战:对接天远数据手机号码归属地API,实现精准用户分群与本地化运营
大数据·开发语言·python
listhi5206 小时前
基于Gabor纹理特征与K-means聚类的图像分割(Matlab实现)
开发语言·matlab
qq_433776426 小时前
【无标题】
开发语言·php
Davina_yu7 小时前
Windows 下升级 R 语言至最新版
开发语言·windows·r语言
阿珊和她的猫7 小时前
IIFE:JavaScript 中的立即调用函数表达式
开发语言·javascript·状态模式
listhi5207 小时前
卷积码编码和维特比译码的MATLAB仿真程序
开发语言·matlab
yuan199977 小时前
基于主成分分析(PCA)的故障诊断MATLAB仿真
开发语言·matlab
J_liaty7 小时前
Java版本演进:从JDK 8到JDK 21的特性革命与对比分析
java·开发语言·jdk
翔云 OCR API8 小时前
发票查验接口详细接收参数说明-C#语言集成完整示例-API高效财税管理方案
开发语言·c#