前言:本篇文章,将分享Qt中常用的,具有代表性的一些控件。
一.按钮类控件
在前边的文章中我们也多次分享过PushButton按钮,但Qt中并非只提供这一种按钮。
在Qt中,QPushButton并非直接继承自QWidget,QAbstractButton才是它的父类,这个父类是一个抽象类,继承自QWidget。
还有另外几个按钮控件,和QPushButton一样,都继承自QAbstractButton,所以说,QAbstractButton包含了这些按钮控件的公共属性的方法。
1.QPushButton
QPushButton的常见属性:
text :按钮中的文本
icon :按钮中的图标
iconSize :按钮中图标的尺寸
shortCut :按钮对应的快捷键
autoRepeat :按钮是否会重复触发. 当鼠标左键按住不放时, 如果设为 true, 则会持续产生鼠标点击事件; 如果设为 false, 则必须释放鼠标, 再次按下鼠标时才能产生点击事件. (相当于枪战游戏中枪的连射还是单射)
autoRepeatDelay :重复触发的延时时间. 按住按钮多久之后, 开始重复触发.
autoRepeatInterval :重复触发的周期.
2.QRadioButton
QRadioButton 是单选按钮. 可以让我们在多个选项中选择⼀个。
常见属性:
checkable :是否能选中。
checked :是否已经被选中. checkable 是 checked 的前提条件。
autoExclusive :是否排他. 选中⼀个按钮之后是否会取消其他按钮的选中. 对于QRadioButton 来说默认就是排他的。
所谓排他性,就是当存在多个单选按钮时,选中一个按钮之后,就会取消其他按钮的选中状态。
比如说当我选中春天时,再去选中夏天,就会自动取消春天的选中状态。
当然,上述单选按钮还存在一个问题,当同一个界面上出现多个单选按钮,我们希望这些按钮之间分为几个组合,组合与组合之间互不影响。此时因为整体的排他性,我们无法实现不同组的按钮之间不会存在排他性。
为了解决这一问题,Qt设计了QButtonGroup类,可以针对按钮进行真正的分组。
使用QButtonGroup类,需要包含同名头文件:
// 创建两个个 QButtonGroup
QButtonGroup* group1 = new QButtonGroup(this);
QButtonGroup* group2 = new QButtonGroup(this);
// 把 QRadioButton 两两⼀组, 放到两个个 QButtonGroup 中.
group1->addButton(ui->radioButton);
group1->addButton(ui->radioButton_2);
group2->addButton(ui->radioButton_3);
group2->addButton(ui->radioButton_4);
分组之后,不同组的按钮之间就不会存在排他性了。
3.QCheckBox
QCheckBox 表示复选按钮. 可以允许选中多个。
QCheckBox 最相关的属性也是 checkable 和 checked,这里就不继续介绍。
二.显示类控件
1.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 就会被选中.
2.QLCDNumber
QLCDNumber是⼀个专门用来显示数字的控件. 类似于 "老式计算器" 的效果。
常见属性:
intValue :QLCDNumber 显示的数字值(int).value :QLCDNumber 显示的数字值(double). 和 intValue 是联动的. 例如给 value 设为 1.5, intValue 的值就是 2. 另外, 设置 value 和 intValue 的方法名字为 display , 而不是 setValue 或 者 setIntValue .digitCount :显示几位数字.mode :数字显示形式.
- QLCDNumber::Dec :十进制模式,显示常规的十进制数字。
- QLCDNumber::Hex :十六进制模式,以十六进制格式显示数字。
- QLCDNumber::Bin :二进制模式,以二进制格式显示数字。
- QLCDNumber::Oct :八进制模式,以八进制格式显示数字。
segmentStyle :设置显示风格.
- QLCDNumber::Flat :平面的显示风格,数字呈现在⼀个平坦的表面上。
- QLCDNumber::Outline :轮廓显示风格,数字具有清晰的轮廓和阴影效果。
- QLCDNumber::Filled :填充显示风格,数字被填充颜色并与背景区分开。
smallDecimalPoint :设置比较小的小数点.
3.QProgressBar
使用QProgressBar 表示⼀个进度条。
相关属性:
minimum :进度条最小值maximum :进度条最大值value :进度条当前值alignment :文本在进度条中的对齐方式.
- Qt::AlignLeft : 左对齐
- Qt::AlignRight : 右对齐
- Qt::AlignCenter : 居中对齐
- Qt::AlignJustify : 两端对齐
textVisible :进度条的数字是否可见.orientation :进度条的方向是水平还是垂直invertAppearance :是否是朝反方向增长进度textDirection :文本的朝向.format :展示的数字格式.
- %p :表示进度的百分比(0-100)
- %v :表示进度的数值(0-100)
- %m :表示剩余时间(以毫秒为单位)
- %t :表示总时间(以毫秒为单位)
4.QCalendarWidget
QCalendarWidget 表示一个 "日历"。
相关属性:
selectDate :当前选中的日期
minimumDate :最小日期
maximumDate :最大日期
firstDayOfWeek :每周的第⼀天(也就是日历的第⼀列) 是周几.
gridVisible :是否显示