PyQt5 工具按钮、抽象按钮

QToolButton

QToolButton类为命令或选项提供快速访问按钮,通常在QToolBar中使用。

工具按钮是一个特殊的按钮,可以快速访问特定的命令或选项。与普通命令按钮相反,工具按钮通常不显示文本标签,而是显示一个图标。

工具按钮通常在使用QToolBar.addAction()创建新的QAction实例时创建,或者使用QToolBar.addAction()将现有的操作添加到工具栏中。也可以像其他任何小部件一样构建工具按钮,并将其与其他小部件一起排列在布局中。

工具按钮的一个经典用途是选择工具;例如绘图程序中的“笔”工具。这将通过使用QToolButton作为切换按钮来实现。

QToolButton支持自动浮起。在自动浮起模式下,只有当鼠标指向该按钮时,该按钮才会绘制一个3D帧。当在QToolBar中使用按钮时,该功能会自动打开。用setAutoRaise()改变它。

工具按钮的图标被设置为QIcon。这使得可以为禁用和活动状态指定不同的像素图。当按钮的功能不可用时使用禁用的pixmap。当鼠标指针悬停在按钮上时,显示活动像素图。

按钮的外观和尺寸可以通过setToolButtonStyle()和setIconSize()来调整。在QMainWindow的QToolBar中使用时,该按钮自动调整为QMainWindow的设置。工具按钮也可以显示箭头符号,而不是一个图标,用arrowType指定。

工具按钮也可以使用弹出按钮。弹出菜单可以使用setMenu()来设置。使用setPopupMode()来配置菜单设置的工具按钮可用的不同模式。默认模式是DelayedPopupMode,它有时与Web浏览器中的“后退”按钮一起使用。按下按钮一会儿,弹出一个菜单,显示可跳转到的页面列表。

具体运行结果参考:
https://zhuanlan.zhihu.com/p/32407887
谢谢 “学点编程吧”

QAbstractButton

QCheckBox、QRadioButton、QPushButton、QToolButton,话说这些按钮都有一个什么特点呢?它们均继承了QAbstractButton类。

Abstract翻译成中文就是抽象的意思,QAbstractButton也就是说这是一个高度抽象的按钮类,以它为基础,所有的按钮都具备其父类的方法和属性,当然还有自己的特点。这也就是为什么明明在文档中某个方法没有出现啊,但是我就是能用,因为来自它的父类QAbstractButton啊。

QAbstractButton类是按钮小部件的抽象基类,提供了按钮常见的功能。

这个类实现一个抽象按钮。该类的子类处理用户操作,并指定如何绘制按钮。

QAbstractButton支持普通按钮和开关按钮(按下去不会弹起来的那种按钮)。按钮可否被选中这个特点在QRadioButton和QCheckBox类中实现的。普通按钮的特性在QPushButton和QToolButton类中实现;如果有必要它们都提供了开关按钮的功能。

任何按钮都可以显示包含文本和图标的标签。setText()设置文本;setIcon()设置图标。如果一个按钮被禁用,它的标签会被改变以使按钮出现“禁用”的外观。

如果按钮是一个文本按钮,带有一个包含’&’的字符串,则QAbstractButton会自动创建一个快捷键。例如:

button = QPushButton('Ro&ck', self)

Alt+C快捷键被分配给按钮,即当用户按Alt+C时,按钮将调用animateClick()。要显示一个实际的“&”,请使用“&&”。

您还可以使用setShortcut()函数设置自定义快捷键。这对于没有任何文本的按钮来说是有用的,因此不能有任何自动的快捷方式。

button.setIcon(QIcon("print.png"))
button.setShortcut("Alt+F7")

QPushButton, QToolButton, QCheckBox, QRadioButton提供的所有按钮都可以显示文本和图标。

一个按钮可以在对话框中通过QPushButton.setDefault()和QPushButton.setAutoDefault()设置默认按钮。

QAbstractButton提供了大多数用于按钮的状态:

isDown()指示按钮是否被按下。
isChecked()指示按钮是否被选中。只有可被选中的按钮才能查看其选中的状态。
isEnabled()指示按钮是否可以被用户按下。
注意:与其他小部件相反,从QAbstractButton派生的按钮在禁用时接受鼠标和上下文菜单事件。

setAutoRepeat()设置如果用户按住按钮,按钮是否自动重复。autoRepeatDelay和autoRepeatInterval定义如何自动重复。

setCheckable()设置按钮是否为开关按钮。

isDown()和ischeck()的区别如下:

当用户单击一个开关按钮来选中时,按钮首先被按下,然后释放到被选中的状态。当用户再次单击它(要取消选中)时,按钮首先移动到按下的状态,然后到未选中的状态(ischeck()和isDown()都是Flase)。

QAbstractButton提供四种信号:

pressed():当鼠标光标在按钮内时,鼠标左键被按下。
release():当在释放鼠标左键时发出的。
clicked() :当按钮第一次被按下,然后被释放;当快捷键被键入时;click()或者animateClick()被调用时。
toggle():当开关按钮状态发生变化时发出的。
为了子类化QAbstractButton,您必须重新实现至少paintEvent()来绘制按钮的轮廓及其文本或像素图。通常建议重新实现sizeHint(),有时还可以使用hitButton()(来确定按钮是否在按钮中)。对于具有两个以上状态的按钮(如三态按钮),您还必须重新实现checkStateSet()和nextCheckState()。

具体运行结果参考:
https://zhuanlan.zhihu.com/p/32818176
谢谢 “学点编程吧”

猜你喜欢

转载自blog.csdn.net/qq_40006058/article/details/80096265
今日推荐