目录
QPushButton
例子:
QRadioButton
例子:
按钮的常见信号函数
单选按钮分组
例子:
QCheckButton
例子:
QToolButton
QWidget的常见属性及其功能对于它的派生类控件都是有效的(也就是Qt中的各种控件),包括下面的按钮控件、标签控件等。
对于按钮类控件,都是继承字自抽象类QAbtractPushButton, 而该抽象类继承自QWidget。
也就是说QWidget中的所有属性和方法QAbstractButton都可以使用,QPushButton和其他按钮类控件都可以使用QWidget和QAbstractButton中的属性和方法。
QPushButton
普通按钮。
QAbstractButton中与QPushButton关系较大的属性及其对应得方法:
text:按钮中的文本。
icon:按钮中的图标。
void setIcon(const QIcon& icon),QIcon是图标类,不需要挂在对象树上,直接在栈区开辟空间即可。
iconSize:按钮中图标的大小。
QSize iconSize(),返回按钮描述按钮图标大小的类对象。
shortcut:按钮对应得快捷键。
void setShortcut(const QKeySequence&),QKeySequence是一个按键序列,支持组合键。
1.字符串形式构造QKeySequenc类型对象,如:QKeySequence("ctrl+c"); QKeySequence("w")
2.Qt中提供的枚举常量进行构造,如:QKeySequence(Qt::Key_A)就是键盘上的A键QKeySequence(Qt::CTRL+Qt::Key_W)就是ctrl+w组合键。
建议使用Qt提供的枚举常量来构造QKeySequenc类型对象。字符串如果拼写错误编译器也不会报错,而使用枚举常量如果写错编译器是会报错的。
autoRepeat:当鼠标左键在按钮按住不放时,按钮是否会连续触发。
void setAutoRepeat(bool)
autoRepeatDaley:重复触发的延时时间,按住按钮多久后开始连续触发。
void setAutoRepeatDaley(int msec),时间单位:ms。
autoRepeatInterval:按钮连续触发的周期。
autoRepeat属性是autoRepeatDaley和autoRepeatInterval的前提。
例子:
创建四个按钮控制一个按钮,四个控制方向的按钮要有对应的图标,并且是关联键盘上的快捷键触发,被控制的按钮要有对应的图标。
QRadioButton
单选按钮。可让我我们在多个选项中选择一个
QAbstractButton中与QRadioButton关系较大的属性及其对应的方法:
作为集继承自QWidget和QAbstractButton得派生类,上面介绍的属性和方法对QRadioButton同样适用。
checkable:是否能选中。bool isCheckable() void setCheckable(bool)
checked:是否已经被选中,bool isChecked(),checkable是checked的前提。
autoExclusive:是否排他。单选按钮默认就是排他的。
例子:
有三个单选按钮,只能选择一个性别性别分为:male,female,other,选择相应的按钮同时在标签控件上显示选择的性别,点击other按钮标签控件上不能显示选择的性别。
注意:如果一个按钮设为不能被选中,只是不能被选中而已,按钮还是可以被点击的,会触发对应得槽函数。如果点击后不想触发槽函数那就只能让按钮不能被点击,即是按钮变为不可用。
例子中的做法是现在Widget类的构造函数中把other按钮设置为不可选中,然后在槽函数中判断,isChecked()是否为真,为真即被选中。我们也可以通过在构造函数中直接将other按钮设置为不可用:ui->radioButton_other->setEnabled(false)。
按钮的常见信号函数
QAbstractButton中由以下信号函数,在按钮可用的情况下:
clicked() :点击按钮+释放鼠标左键才能触发。
click(bool):点击按钮+释放鼠标左键并且该按钮此时是被选中触发。
pressed():按下按钮右键触发。
released():鼠标左键释放触发。
toggled:checked属性变化才触发,也就是如果按钮的由被选中到没被选中,或由没被选中到被选中。checkable属性会影响该信号触发。
单选按钮分组
例子:
创建六个单选按钮,用来模拟麦当劳点餐界面。
如果直接运行程序,由于单选按钮默认就是排他的,因此这六个按钮只有一个可以被选择。但是我们要求时汉堡、小食、饮品这三种中都选择一个,因此就要分别对汉堡、小食、饮品进行分组,每组内都具有排他性即可。
注意:要将创建QButtonGroup类对象挂在对象树上因此需要在堆上开辟,然后使用addButton方法向创建的按钮组对象中添加按钮。
QCheckButton
复选按钮。
QAbstractButton中与QCheckButton关系较大的属性:
checkable和checked。
例子:
有三个复选按钮,分别代表的是今天要做的事情,还有一个确认按钮,点击确认按钮后,将选中的事项内容显示出来。
QToolButton
QToolButton的大部分功能与QPushButton是一样的,但是QToolButton主要应用在工具栏,菜单等场景。