按钮是界面上经常使用的组件,常用的4种按钮组件是普通按钮(QPushButton类)、工具按钮(QToolButton 类)、单选按钮(QRadioButton类)、复选框(QCheckBox类),它们都有共同的父类QAbstractButton(见图4-2),所以它们有一些共有的特性。
Qt 中常用的按钮(button)包括以下几种:
- 普通按钮(QPushButton):用于点击触发操作,继承自 QAbstractButton。其相关属性包括文本(text)、图标(icon)、图标尺寸(iconSize)、快捷键(shortCut)、自动重复触发设置(autoRepeat)、重复触发的延时时间(autoRepeatDelay)、重复触发的周期(autoRepeatInterval)。
- 工具按钮(QToolButton):用于显示图片,若想显示文字,可修改风格为 toolButtonStyle,凸起风格为 autoRaise。
- 单选按钮(QRadioButton):用于点击选中操作(圆形),可设置默认选中状态,如 ui->rBtnMan->setChecked(true)。
- 复选框(QCheckBox):增加的 tristate 属性,表示是否有三种复选状态,即 Checked、Unchecked 和 PartiallyChecked。可以用 QAbstractButton 定义的函数 isChecked()和 setChecked()读取和设置复选状态,也可以用 QCheckBox 中定义的 checkState()和 setCheckState()读取和设置复选状态。当复选框的 tristate 属性设置为 false,也就是只有两种状态时,stateChanged()信号和 toggled()信号作用一样。此外,获取复选框的状态可以通过 connect(ui->checkBox, &QCheckBox::stateChanged, [](int state){ qDebug() << "state is " << state;});来实现,对应设置这个属性才能出现半选、选中、没选三种状态,分别用 0、1、2 表示,否则只有 0、2 两种状态。
一、按钮类接口详解
1、按钮的属性
1. text:按钮的文本内容。可以使用setText()方法来设置按钮的文本。
2. icon:按钮的图标。可以使用setIcon()方法将一个图标文件设置为按钮的图标。
3. enabled:按钮的启用状态。默认情况下,按钮是启用的,即可以进行交互操作。可以使用setEnabled()方法来设置按钮的启用状态,可以用isEnabled()方法来获取当前按钮的启用状态。
4. checkable:按钮的可选状态。当一个按钮是可选的时候,点击按钮就会切换选中和非选中两种状态。可以使用setCheckable()方法将一个按钮设置为可选的。
5. checked:按钮的选中状态。当一个按钮是可选的时,可以使用setChecked()方法设置按钮的选中状态,可以使用isChecked()方法来获取当前按钮的选中状态。
6. autoDefault:按钮的自动默认按钮状态。当某一个按钮设置为自动默认按钮时,按下Enter键就会触发该按钮的点击事件。可以使用setAutoDefault()方法来设置按钮的自动默认按钮状态。
7. flat:按钮的平面化状态。当一个按钮设置为平面化状态时,按钮的外观将没有3D效果。可以使用setFlat()方法将一个按钮设置为平面化状态。
8. styleSheet:按钮的样式表。可以使用CSS样式来自定义按钮的外观。可以使用setStyleSheet()方法来设置按钮的样式表。
2、按钮的信号
1. clicked():当按钮被点击时发出的信号。连接到该信号的槽函数将在按钮被点击时被调用。
2. pressed():当按钮被按下时发出的信号。连接到该信号的槽函数将在按钮被按下时被调用。
3. released():当按钮被释放时发出的信号。连接到该信号的槽函数将在按钮被释放时被调用。
4. toggled(bool checked):当按钮的选中状态发生改变时发出的信号。参数checked表示按钮的当前选中状态。连接到该信号的槽函数将在按钮的选中状态发生改变时被调用。
二、QPushbutton类
QPushButton *button = new QPushButton(this);
QPushButton类是Qt中常用的按钮类,用于创建各种类型的按钮。QPushButton类继承自QAbstractButton类,并添加了一些功能和属性,使它成为一个完整的按钮。
下面是QPushButton类的一些常用的属性和功能:
-
text:按钮上显示的文本。可以通过setText()方法设置文本,通过text()方法获取当前文本。
-
icon:按钮上显示的图标。可以通过setIcon()方法设置图标,通过icon()方法获取当前图标。
-
sizePolicy:按钮的尺寸策略。可以通过setSizePolicy()方法设置尺寸策略,通过sizePolicy()方法获取当前尺寸策略。
-
tooltip:鼠标悬停在按钮上时显示的提示信息。可以通过setToolTip()方法设置提示信息,通过toolTip()方法获取当前提示信息。
-
flat:指示按钮是否是扁平按钮。扁平按钮没有边框和背景色,默认为false。可以通过setFlat()方法设置是否为扁平按钮,通过isFlat()方法获取当前设置。
-
checkable:指示按钮是否是可选按钮。可选按钮有两种状态:选中和未选中,默认为false。可以通过setCheckable()方法设置是否为可选按钮,通过isChecked()方法获取当前选中状态。
-
autoDefault:指示按钮是否自动设置为默认按钮。默认按钮在对话框中可以通过回车键触发,默认为false。可以通过setAutoDefault()方法设置是否为默认按钮,通过autoDefault()方法获取当前设置。
-
clicked()信号:当按钮被点击时发出的信号。可以连接到该信号的槽函数来响应按钮的点击事件。
-
pressed()和released()信号:当按钮被按下和释放时发出的信号。可以连接到这两个信号的槽函数来响应按钮按下和释放事件。
三、QToolButton类
QToolButton *button = new QToolButton(this);
QToolButton类是Qt中的工具按钮类,它继承自QPushButton类,但提供了一些额外的功能和属性,使其适用于更多的应用场景。
下面是QToolButton类的一些常用属性和功能:
1. text:按钮上显示的文本。可以通过setText()方法设置文本,通过text()方法获取当前文本。
2. icon:按钮上显示的图标。可以通过setIcon()方法设置图标,通过icon()方法获取当前图标。
3. popupMode:弹出菜单的模式。可以通过setPopupMode()方法设置弹出菜单的模式,常见的模式有菜单按钮模式(MenuButtonPopup)和延迟弹出模式(DelayedPopup)。菜单按钮模式在按钮上显示一个下拉箭头,并在点击按钮时弹出菜单;延迟弹出模式在鼠标悬停在按钮上一段时间后弹出菜单。
4. menu:与按钮关联的菜单。可以通过setMenu()方法设置关联的菜单,通过menu()方法获取当前关联的菜单。
5. autoRaise:指示按钮是否在鼠标悬停在按钮上时自动显示高亮效果。默认为false。可以通过setAutoRaise()方法设置是否自动显示高亮效果,通过autoRaise()方法获取当前设置。
6. clicked()信号:当按钮被点击时发出的信号。可以连接到该信号的槽函数来响应按钮的点击事件。
7. triggered(QAction *action)信号:当与按钮关联的菜单项被选中时发出的信号。可以连接到该信号的槽函数来响应菜单项的选中事件。
四、QRadioButton类
QRadioButton *button2 = new QRadioButton(this);
QRadioButton类是Qt中的一个窗口部件类,用于创建单选按钮。单选按钮允许用户在一组选项中选择一个选项。只有当用户选择其中一个选项时,其他选项才会自动取消选中状态。QRadioButton类继承自QAbstractButton类。
QRadioButton类提供了一些用于设置和获取单选按钮属性的方法,例如设置文本、设置图标、设置是否选中等。它还提供了一些信号和槽函数,用于处理单选按钮的状态变化。
五、QCheckBox类
QCheckBox *Box = new QCheckBox(this);
QCheckBox类是Qt中的一个窗口部件类,用于创建复选框。复选框允许用户在一组选项中选择多个选项。用户可以通过点击复选框来选择或取消选择一个选项。QCheckBox类继承自QAbstractButton类。
QCheckBox类提供了一些用于设置和获取复选框属性的方法,例如设置文本、设置图标、设置是否选中等。它还提供了一些信号和槽函数,用于处理复选框的状态变化。
六、Button类行为
1、setText();//设置按钮上显示的文本
2、setParent();//设置按钮显示在哪个窗口内
3、move();//设置按钮的位置
4、resize();//设置按钮的大小
5、setStyleSheet()----设置按钮样式
button->setStyleSheet("QPushButton{font:30px;color:red}");//设置按钮样式
background-color: 设置按钮的背景颜色。
pressed-background-color: 设置按钮在按下状态时的背景颜色。
hover-background-color: 设置鼠标悬停在按钮上时的背景颜色。
color: 设置按钮的前景(文本)颜色。
pressed-color: 设置按钮在按下状态时的前景颜色。
hover-color: 设置鼠标悬停在按钮上时的前景颜色。
border: 设置按钮的边框样式。
border-radius: 设置按钮的边框圆角半径。
border-color: 设置按钮的边框颜色。
font: 设置按钮的字体样式。
text-align: 设置按钮文本的对齐方式。
icon: 设置按钮显示的图标。
icon-size: 设置按钮图标的大小。
min-width: 设置按钮的最小宽度。
min-height: 设置按钮的最小高度。
max-width: 设置按钮的最大宽度。
max-height: 设置按钮的最大高度。
6、setEnabled();//设置按钮的状态
7、setGeometry();//设置按钮的位置和大小