一、QT中的常用按钮控件:
    QAbstractButton、QPushButton、QToolButton、QRadioButton、QCheckBox
    image.png

    二、QAbstractButton类:
    1、图标和标题:

    1. // 参数text的内容显示到按钮上
    2. void QAbstractButton::setText(const QString &text);
    3. // 得到按钮上显示的文本内容, 函数的返回就是
    4. QString QAbstractButton::text() const;
    5. // 得到按钮设置的图标
    6. QIcon icon() const;
    7. // 给按钮设置图标
    8. void setIcon(const QIcon &icon);
    9. // 得到按钮图标大小
    10. QSize iconSize() const
    11. // 设置按钮图标的大小
    12. [slot]void setIconSize(const QSize &size);

    2、按钮的Check属性:
    按钮的三这种状态:
    ①、Normal: 普通状态,没有和鼠标做任何接触
    ②、Hover: 悬停状态,鼠标位于按钮之上,但是并未按下
    ③、Pressed: 按压状态,鼠标键在按钮上处于按下状态

    1. // 判断按钮是否设置了checkable属性, 如果设置了点击按钮, 按钮一直处于选中状态
    2. // 默认这个属性是关闭的, not checkable
    3. bool QAbstractButton::isCheckable() const;
    4. // 设置按钮的checkable属性
    5. // 参数为true: 点击按钮, 按钮被选中, 松开鼠标, 按钮不弹起
    6. // 参数为false: 点击按钮, 按钮被选中, 松开鼠标, 按钮弹起
    7. void QAbstractButton::setCheckable(bool);
    8. // 判断按钮是不是被按下的选中状态
    9. bool QAbstractButton::isChecked() const;
    10. // 设置按钮的选中状态: true-选中, false-没选中
    11. // 设置该属性前, 必须先进行 checkable属性的设置
    12. void QAbstractButton::setChecked(bool);

    3、槽函数:

    1. // 执行一个动画点击:按钮被立即按下,并在毫秒后释放(默认是100毫秒)。
    2. [slot] void QAbstractButton::animateClick(int msec = 100);
    3. // 执行一次按钮点击, 相当于使用鼠标点击了按钮
    4. [slot] void QAbstractButton::click();
    5. // 设置按钮的选中状态: true-选中, false-没选中
    6. // 设置该属性前, 必须先进行 checkable属性的设置
    7. [slot] void QAbstractButton::setChecked(bool);
    8. // 设置按钮上图标大小
    9. [slot]void setIconSize(const QSize &size);
    10. // 切换可检查按钮的状态。 checked <==> unchecked
    11. [slot] void QAbstractButton::toggle();

    4、信号:

    1. /*
    2. 当按钮被激活时(即,当鼠标光标在按钮内时按下然后释放),当键入快捷键时,或者当click()或animateClick()被调用时,这个信号被发出。值得注意的是,如果调用setDown()、setChecked()或toggle(),则不会触发此信号。
    3. */
    4. [signal] void QAbstractButton::clicked(bool checked = false);
    5. // 在按下按钮的时候发射这个信号
    6. [signal] void QAbstractButton::pressed();
    7. // 在释放这个按钮的时候发射直观信号
    8. [signal] void QAbstractButton::released();
    9. // 每当可检查按钮改变其状态时,就会发出此信号。checked在选中按钮时为true,在未选中按钮时为false
    10. [signal] void QAbstractButton::toggled(bool checked);

    三、QPushButton类:
    1、此按钮是 Qt 按钮中使用频率最高的一个,对这个类进行操作,大部分时候都需要使用它从父类继承过来的那些 API。

    1. // 构造函数
    2. /*
    3. 参数:
    4. - icon: 按钮上显示的图标
    5. - text: 按钮上显示的标题
    6. - parent: 按钮的父对象, 可以不指定
    7. */
    8. QPushButton::QPushButton(const QIcon &icon, const QString &text, QWidget *parent = nullptr);
    9. QPushButton::QPushButton(const QString &text, QWidget *parent = nullptr);
    10. QPushButton::QPushButton(QWidget *parent = nullptr);
    11. // 判断按钮是不是默认按钮
    12. bool isDefault() const;
    13. // 一般在对话框窗口中使用, 将按钮设置为默认按钮, 自动关联 Enter 键
    14. void setDefault(bool);
    15. /*
    16. 将弹出菜单菜单与此按钮关联起来。这将把按钮变成一个菜单按钮,
    17. 在某些样式中会在按钮文本的右边产生一个小三角形。
    18. */
    19. void QPushButton::setMenu(QMenu *menu);
    20. /*
    21. 显示(弹出)相关的弹出菜单。如果没有这样的菜单,这个函数什么也不做。
    22. 这个函数直到弹出菜单被用户关闭后才返回。
    23. */
    24. [slot] void QPushButton::showMenu();

    三、QToolButton类:
    1、说明:
    这个类也是一个常用按钮类,使用方法和功能跟 QPushButton 基本一致,只不过在对于关联菜单这个功能点上,QToolButton 类可以设置弹出的菜单的属性,以及在显示图标的时候可以设置更多的样式,可以理解为是一个增强版的 QPushButton

    1. ///////////////////////////// 构造函数 /////////////////////////////
    2. QToolButton::QToolButton(QWidget *parent = nullptr);
    3. /////////////////////////// 公共成员函数 ///////////////////////////
    4. /*
    5. 1. 将给定的菜单与此工具按钮相关联。
    6. 2. 菜单将根据按钮的弹出模式显示。
    7. 3. 菜单的所有权没有转移到“工具”按钮(不能建立父子关系)
    8. */
    9. void QToolButton::setMenu(QMenu *menu);
    10. // 返回关联的菜单,如果没有定义菜单,则返回nullptr。
    11. QMenu *QToolButton::menu() const;
    12. /*
    13. 弹出菜单的弹出模式是一个枚举类型: QToolButton::ToolButtonPopupMode, 取值如下:
    14. - QToolButton::DelayedPopup:
    15. - 延时弹出, 按压工具按钮一段时间后才能弹出, 比如:浏览器的返回按钮
    16. - 长按按钮菜单弹出, 但是按钮的 clicked 信号不会被发射
    17. - QToolButton::MenuButtonPopup:
    18. - 在这种模式下,工具按钮会显示一个特殊的箭头,表示有菜单。
    19. - 当按下按钮的箭头部分时,将显示菜单。按下按钮部分发射 clicked 信号
    20. - QToolButton::InstantPopup:
    21. - 当按下工具按钮时,菜单立即显示出来。
    22. - 在这种模式下,按钮本身的动作不会被触发(不会发射clicked信号
    23. */
    24. // 设置弹出菜单的弹出方式
    25. void setPopupMode(QToolButton::ToolButtonPopupMode mode);
    26. // 获取弹出菜单的弹出方式
    27. QToolButton::ToolButtonPopupMode popupMode() const;
    28. /*
    29. QToolButton可以帮助我们在按钮上绘制箭头图标, 是一个枚举类型, 取值如下:
    30. - Qt::NoArrow: 没有箭头
    31. - Qt::UpArrow: 箭头向上
    32. - Qt::DownArrow: 箭头向下
    33. - Qt::LeftArrow: 箭头向左
    34. - Qt::RightArrow: 箭头向右
    35. */
    36. // 显示一个箭头作为QToolButton的图标。默认情况下,这个属性被设置为Qt::NoArrow。
    37. void setArrowType(Qt::ArrowType type);
    38. // 获取工具按钮上显示的箭头图标样式
    39. Qt::ArrowType arrowType() const;
    40. ///////////////////////////// 槽函数 /////////////////////////////
    41. // 给按钮关联一个QAction对象, 主要目的是美化按钮
    42. [slot] void QToolButton::setDefaultAction(QAction *action);
    43. // 返回给按钮设置的QAction对象
    44. QAction *QToolButton::defaultAction() const;
    45. /*
    46. 图标的显示样式是一个枚举类型->Qt::ToolButtonStyle, 取值如下:
    47. - Qt::ToolButtonIconOnly: 只有图标, 不显示文本信息
    48. - Qt::ToolButtonTextOnly: 不显示图标, 只显示文本信息
    49. - Qt::ToolButtonTextBesideIcon: 文本信息在图标的后边显示
    50. - Qt::ToolButtonTextUnderIcon: 文本信息在图标的下边显示
    51. - Qt::ToolButtonFollowStyle: 跟随默认样式(只显示图标)
    52. */
    53. // 设置的这个属性决定工具按钮是只显示一个图标、只显示文本,还是在图标旁边/下面显示文本。
    54. [slot] void QToolButton::setToolButtonStyle(Qt::ToolButtonStyle style);
    55. // 返回工具按钮设置的图标显示模式
    56. Qt::ToolButtonStyle toolButtonStyle() const;
    57. // 显示相关的弹出菜单。如果没有这样的菜单,这个函数将什么也不做。这个函数直到弹出菜单被用户关闭才会返回。
    58. [slot] void QToolButton::showMenu();

    四、QRadioButton类:
    说明:此按钮类是 Qt 提供的单选按钮,一般都是以组的方式来使用 (多个按钮中同时只能选中其中一个)。操作这个按钮使用的大部分函数都是从父类继承过来的,它的父类是 QAbstractButton

    特点:如果单选按钮被选中, 再次点击这个按钮选中状态是不能被取消的

    1. // 构造函数
    2. /*
    3. 参数:
    4. - text: 按钮上显示的标题
    5. - parent: 按钮的父对象
    6. */
    7. QRadioButton::QRadioButton(const QString &text, QWidget *parent = nullptr);
    8. QRadioButton::QRadioButton(QWidget *parent = nullptr);

    五、QCheckBox类:
    说明:此按钮是 Qt 中的复选框按钮,可以单独使用,也可以以组的方式使用 (同一组可以同时选中多个), 当复选按钮被选中, 再次点击之后可以取消选中状态, 这一点和单选按钮是不同的。操作这个按钮使用的大部分函数都是从父类继承过来的,它的父类是 QAbstractButton

    1. // 构造函数
    2. /*
    3. 参数:
    4. - text: 按钮上显示的文本信息
    5. - parent: 按钮的父对象
    6. */
    7. QCheckBox::QCheckBox(const QString &text, QWidget *parent = nullptr);
    8. QCheckBox::QCheckBox(QWidget *parent = nullptr);
    9. // 判断当前复选框是否为三态复选框, 默认情况下为两种状态: 未选中, 选中
    10. bool isTristate() const;
    11. // 设置当前复选框为三态复选框: 未选中, 选中, 半选中
    12. void setTristate(bool y = true);
    13. /*
    14. 参数 state, 枚举类型 Qt::CheckState:
    15. - Qt::Unchecked --> 当前复选框没有被选中
    16. - Qt::PartiallyChecked --> 当前复选框处于半选中状态, 部分被选中(三态复选框)
    17. - Qt::Checked --> 当前复选框处于选中状态
    18. */
    19. // 设置复选框按钮的状态
    20. void QCheckBox::setCheckState(Qt::CheckState state);
    21. // 获取当前复选框的状态
    22. Qt::CheckState QCheckBox::checkState() const;
    1. // 当复选框的状态改变时,即当用户选中或取消选中复选框时,他的信号就会发出。
    2. // 参数 state 表示的是复选框的三种状态中某一种, 可参考 Qt::CheckState
    3. [signal] void QCheckBox::stateChanged(int state);