前言:
把按钮相关控件作为一个学习大面,所以内容篇幅较大,建议收藏,用目录锚定来看
按钮控件
按钮其实也是一种用户输入(点击),不过偏事件且相关类还是比较多,所以我们单独作为一个学习大类,要学习的有以下: QAbstractButton(按钮基类)、普通按钮(QPushButton)、链接按钮(QCommandLinkButton)、单选按钮(QRadioButton)、复选框按钮(QCheckBox)、工具按钮(QToolButton)、QButtonGroup、QCheckBox
QAbstractButton
简要:
继承关系【QWidget --> QAbstractButton】,【抽象按钮】控件,按钮的基类 是抽象类(使用时需子类化) 相关子类:普通按钮(QPushButton)、链接按钮(QCommandLinkButton)、单选按钮(QRadioButton)、复选框按钮(QCheckBox)、工具按钮(QToolButton) 学习建议:了解以下"信号与槽"机制
功能作用:
1. 提示文本 2. 图标相关: setIcon(QIcon(str_img)):设置图标 setIconSize(QSize(w,h)):设置图标尺寸 icon():获取图标 iconSize():获取图标大小 3. 设置快捷键: setText("*&key*"):通过该该方法中加入“&”符号,实现Alt + ke快捷点击 setShortcut(str):设置快捷键方法,str例如:"Alt+S" 4. 自动重复: 结合信号与槽使用,能重复发出信号 setAutoRepeat(bool):是否设置为自动重复 setAutoRepeatInterval(ms):设置自动重复的时间间隔 setAutoRepeatDelay(ms):设置自动重复的初始延迟时间(延迟时间过后才开始频率地自动重复) autoRepeat() --> bool autoRepeatInterval() --> int autoRepeatDelay() --> int 应用场景:当用户点击按钮后不松开,重复性响应方法事件 5. 状态: setDown(bool):是否设置按钮为被按下状态(当被点击时退出按下状态) setChecked(bool):是否设置按钮被选中 setCheckable(bool):设置是否按钮是可以选中的 toggle():切换选中与非选中状态 isDown() --> bool isChecked() --> bool isCheckable --> bool 继承状态(QWidget): setEnable(bool) isEnable() --> bool 6. 排他性 简要:如果同时存在多个按钮,而此时所有按钮有设置了排他性,则在同一时刻只能选中一个按钮(同级按钮控件)。是相对 于同级按钮控件来说,即有相同的直接父控件;如果直接父控件不同,则排他性在按钮控件相互间无关系、不影响 setAutoExclusive(bool):是否设置为排他性 autoExclusive() --> bool 注意:按钮默认是有排他性的 应用场景:设定按钮组中的按钮,单选特性 7. 点击: 简要:代码式模拟一次点击 click():普通点击 animateClick(msc):动画点击,有动画效果的点击,msc动画持续时间 hitButton(QPoint):设置点击有效区域,可通过重写该方法对QPoint进行判断,返回Flase:无效;返回True,有效。
信号:
pressed:鼠标按下信号 released:鼠标释放信号 clicked:控件内按下 + 控件内释放信号 toggled(bool isChecked):选中状态切换信号(一般在单选框或复选框中使用)
自绘按钮:
步骤:通过继承该类并复写painterEvent方法(抽象方法),并在该方法内通过相关方法绘制“需求按钮” 下面简单提一下需要绘制按钮使用到的方法: QPainter(QPaintDevice): 创建“画家”对象 QPainterDevice:“画纸” --> “画家”配置对象(绑定“画纸”) QPen(QColor,*args) 创建一个“画笔对象” QColor:颜色对象 painter.setPen(pen): “画家”设置(选择)“笔” painter.draw*(**args): “画家”进行绘画
QPushButton
简要:
继承QAbstractButton(抽象类),【矩形普通】按钮
应用场景:登录按钮、注册按钮、关闭按钮、是/否操作按钮
功能作用:
创建按钮: QPushButton():无控件的按钮组件 QPushButton(parent):创建按钮同时,设置父控件 QPushButton(text,parent):创建按钮同时,设置文本、父控件 QPushButton(QIcon,text,parent):创建按钮同时,设置图标、文本、父控件 菜单: 结合下面的QMenu类的相关方法 setMenu(QMenu):设置菜单 menu():获取菜单 showMenu():展示菜单 边框是否保持扁平: 设置扁平后,无背景颜色、去边框,不再突出显示 setFlat(bool):是否设置为扁平 isFlat() --> bool 默认状态处理 使按钮具有默认状态独特显眼的样式,并会显示保持(不同于setChecked) setAutoDefault(bool):是否设置为自动默认按钮 autoDefault() --> bool setDefault(bool) isDefault() --> bool 应用场景:在对话框中使用
QMenu
简要:
继承关系【QWidget-->QMenu】,菜单类
菜单的组成:行为动作(菜单选项)、分割线、子菜单
功能与作用:
创建菜单: QMenu(parent) QMenu(str,parent) 配置菜单 addAction(QAction):添加行为动作 addSparator():添加分割线 addMenu(QMenu):增加子菜单 QAction/QMenu对象方法(具体方法自行查看): setTitle(str):设置标题 setIcon(QIcon):设置图标 setData(Any):绑定数据 action.triggered: 菜单的行为被点击信号,可结合槽函数来处理
QCommandLinkButton
简要:
继承关系【QAbstractButton --> QCommandLinkButton】,命令链接按钮 命令链接是Windows Vista引入的新控件 它的用途类似于单选按钮的用途,因为它作用在一组互斥选项之间来进行选择 命令链接按钮不应单独使用,而应作为向导和对话框中单选按钮的替代选项 外观通常类似于平面按钮的外观,但除了普通按钮文本之外,他还允许描述性文本
功能作用:
创建命令链接按钮: QCommandLinkButton(parent) QCommandLinkButton(title_str,parent) QCommandLinkButton(title_str, description_str, parent) 设置描述: setDescription(str) description() --> str
QToolButton
简要:
继承自QAbstractButton,简记:工具图标按钮 为提供一个快速访问按钮,通常是在工具栏内部使用,工具按钮通常不显示文本标签(用图标来醒目标识)
功能与作用:
创建按钮: QToolButton(parent) 设置文本、图标、提示文本: 同时设置文本和图标时仅显示图标 setText(str)、setICon(QIcon)、setIconSize(QSize) setToolTip(str):设置文本提示 按钮样式风格: setToolButtonStyle(Qt.ToolButtonStyle): ToolButtonStyle枚举类(5),如下: ToolButtonIconOnly:默认,仅显示图标 ToolButtonTextOnly:仅显示文字 ToolButtonTextBesideIcon:文本显示在图标旁边 ToolButtonTextUnderIcon:文本显示在图标下边 ToolButtonFollowStyle :遵循风格 设置箭头: setArrowType(Qt.ArrowType): ArrowType枚举类(5),如下: NoArrow:无箭头 UpArrow:向上箭头 DownArrow:向下箭头 LeftArrow:左箭头 RightArrow:右箭头 设置自动提升: 设置后,点击前后会出现提升效果差 setAutoRaise(bool) AutoRaise() --> bool 菜单弹出模式: setPopupMode(QToolButton.ToolButtonPopupMode): 设置菜单弹出模式 ToolButtonPopupMode选项,如下: DelayedPopup:延迟显示(默认) InstantPopup:直接显示 MenuButtonPopup:箭头点击显示 popupMode():获取菜单弹出模式
信号:
triggered: 当点击action触发该信号,并会将QAction对象传给槽函数
QRadioButton
简要:
继承自QAbstractButton,单选按钮 一般给用户提供若干选项中的单选操作,默认按钮互相间有“排他性”
功能作用:
创建单选按钮: QRadioButton(parent) QRadioButton(text,parent) 其他方法继承自父类QAbstractButton
信号:继承自父类,略
问题解决:
多组互斥问题: 1. 创建父控件(QWidget)来对按钮分组 2. 使用按钮组类QButtonGroup(在下一章节有详细介绍),这是一种推荐形式
QButtonGroup
简要:
继承自QObject 提供了一个抽象的按钮容器,可以将多个按钮划分为一组 不具备可视化效果 一般放的都是可以被检查的按钮
功能作用:
创建按钮组对象: QButtonGroup() 向按钮组添加按钮 addButton(QAbstractButton,id=-1) 查看按钮组中的按钮: buttons():获取所有按钮 button(id):根据addButton中的id获取指定按钮 checkedButton():获取被选中的按钮 移除按钮组的按钮: 解除按钮组中的抽象关系,并不是从界面上删除按钮 removeButton(QAbstractButton) 绑定和获取ID: setId(QAbstractButton,int):为按钮组中的指定按钮设置id id(QAbstradctButton):获取按钮组中指定按钮的id checkedId(QAbstractButton):获取按钮组中被选中按钮的id 互斥设置: setExclusive(bool):是否设置按钮组中为互斥关系 exclusive() --> bool
信号:
buttonClicked:按钮组中按钮被点击信号 buttonPressed:按钮组中按钮被按下信号 buttonReleased:按钮组中按钮被释放信号 buttonToggled:按钮组中按钮被切换状态信号
QCheckBox
简要:
继承自QAbstractButton,多选按钮 用于给用户提供多选项操作
功能作用:
创建多选按钮: QCheckBox(parent) QCheckBox(text,parent) 设置是否为三态: 三态即三种状态 setTristate(bool):是否设置为三态 isTristate() --> bool 设置复选框状态: setCheckState(Qt.CheckState):设置复选框状态 checkState():获取复选框状态 Qt.CheckState: Qt.Unchecked:未被选中 Qt.PartiallyChecked:部分选中 Qt.Checked:真的被选中
信号:
stateChanged:复选框状态发生改变信号
版权归原作者 Mr.Joden 所有, 如有侵权,请联系我们删除。