网站首页 > 教程文章 正文
QIcon简介
在Qt中, QIcon类提供了处于不同模式和状态下的可缩放图标。QIcon可以从给定的一组像素图生成较小,较大,激活和禁用等情况小的像素图。Qt窗口部件使用这些像素图来显示代表特定动作的图标。
QIcon最简单的用法是文件或资源中创建一个,然后就可以使用它了,例如:
button = QToolButton()
button.setIcon(QIcon('open.png')
要取消图标设置,只需要在其位置上设置一个空图标即可:
button.setIcon(QIcon())
注:从Qt 4.2开始,QIcon开始支持SVG图标
QIcon.Mode定义了图标的四种模式:
- QIcon.Normal: 控件或窗口为使能但未激活状态。
- QIocn.Disabled: 控件或窗口为禁用状态。
- QIcon.Active: 控件或窗口为激活状态。
- QIcon.Selected: 控件或窗口为选中状态。
当控件或窗口的状态发生切换时,默认的图标绘制函数会自动根据控件或窗口的状态重新绘制图标。如果控件或者窗口还有所谓的开关状态(比如一个按钮可以有按下和弹起两个状态),则还可以根据state参数来选择不同的图像。state参数由QIcon.State枚举类型来定义,它有以下取值:
- QIcon.On: 控件或窗口处于开的状态。
- QIcon.Off: 控件或窗口处于关的状态。
综合起来,一个图标可能有八种不同的表现形式,如下图所示:
Qt内置图标
在Qt程序中,通过QStyle.StandardPixmap枚举,该枚举描述了可用的标准像素图。QIcon可以使用这是内置的位图图标。这些内置位图图标有:
- QStyle.SP_TitleBarMenuButton (0): 标题栏上的菜单按钮。
- QStyle.SP_TitleBarMinButton (1): 最小化标题栏上的按钮(例如QMdiSubWindow中的按钮)。
- QStyle.SP_TitleBarMaxButton (2): 最大化标题栏上的按钮。
- QStyle.SP_TitleBarCloseButton (3): 标题栏上的“关闭”按钮。
- QStyle.SP_TitleBarNormalButton (4): 标题栏上的“正常(还原)”按钮。
- QStyle.SP_TitleBarShadeButton (5): 标题栏上的阴影按钮。
- QStyle.SP_TitleBarUnshadeButton (6): 标题栏上的阴影按钮。
- QStyle.SP_TitleBarContextHelpButton (7): 标题栏上的上下文帮助按钮。
- QStyle.SP_DockWidgetCloseButton (8): 停靠窗口上的“关闭”按钮(另请参见QDockWidget)。
- QStyle.SP_MessageBoxInformation (9): “信息”图标。
- QStyle.SP_MessageBoxWarning (10): “警告”图标。
- QStyle.SP_MessageBoxCritical (11): “致命错误”图标。
- QStyle.SP_MessageBoxQuestion (12): “问题”图标。
- QStyle.SP_DesktopIcon (13): “桌面”图标。
- QStyle.SP_TrashIcon (14): “垃圾箱”图标。
- QStyle.SP_ComputerIcon (15): “我的电脑”图标。
- QStyle.SP_DriveFDIcon (16): 软盘图标。
- QStyle.SP_DriveHDIcon (17): 硬盘驱动器图标。
- QStyle.SP_DriveCDIcon (18): CD图标。
- QStyle.SP_DriveDVDIcon (19): DVD图标。
- QStyle.SP_DriveNetIcon (20): 网络图标。
- QStyle.SP_DirOpenIcon (21): 打开目录图标。
- QStyle.SP_DirClosedIcon (22): 关闭的目录图标。
- QStyle.SP_DirLinkIcon (23): 链接到目录图标。
- QStyle.SP_FileIcon (25): 文件图标。
- QStyle.SP_FileLinkIcon (26): 链接到文件图标。
- QStyle.SP_ToolBarHorizontalExtensionButton (27): 水平工具栏的扩展按钮。
- QStyle.SP_ToolBarVerticalExtensionButton (28): 垂直工具栏的扩展按钮。
- QStyle.SP_FileDialogStart (29): 文件对话框中的“开始”图标。
- QStyle.SP_FileDialogEnd (30): 文件对话框中的“结束”图标。
- QStyle.SP_FileDialogToParent (31): 文件对话框中的“父目录”图标。
- QStyle.SP_FileDialogNewFolder (32): 文件对话框中的“创建新文件夹”图标。
- QStyle.SP_FileDialogDetailedView (33): 文件对话框中的详细视图图标。
- QStyle.SP_FileDialogInfoView (34): 文件对话框中的文件信息图标。
- QStyle.SP_FileDialogContentsView (35): 文件对话框中的内容视图图标。
- QStyle.SP_FileDialogListView (36): 文件对话框中的列表视图图标。
- QStyle.SP_FileDialogBack (37): 文件对话框中的后退箭头。
- QStyle.SP_DirIcon (38): 目录图标。
- QStyle.SP_DialogOkButton (39): QDialogBu?ttonBox中的标准OK按钮的图标。
- QStyle.SP_DialogCancelButton (40): QDialogBu??ttonBox中的标准“取消”按钮的图标。
- QStyle.SP_DialogHelpButton (41): QDialogBu??ttonBox中的标准帮助按钮的图标。
- QStyle.SP_DialogOpenButton (42): QDialogBu??ttonBox中的标准“打开”按钮的图标。
- QStyle.SP_DialogSaveButton (43): QDialogBu??ttonBox中的标准“保存”按钮的图标。
- QStyle.SP_DialogCloseButton (44): QDialogBu??ttonBox中的标准“关闭”按钮的图标。
- QStyle.SP_DialogApplyButton (45): QDialogBu??ttonBox中的标准“应用”按钮的图标。
- QStyle.SP_DialogResetButton (46): QDialogBu??ttonBox中的标准Reset按钮的图标。
- QStyle.SP_DialogDiscardButton (47): QDialogBu??ttonBox中的标准Discard按钮的图标。
- QStyle.SP_DialogYesButton (48): QDialogBu??ttonBox中的标准“是”按钮的图标。
- QStyle.SP_DialogNoButton (49): QDialogBu??ttonBox中的标准No按钮的图标。
- QStyle.SP_ArrowUp (50): 向上的图标箭头。
- QStyle.SP_ArrowDown (51): 向下的图标箭头。
- QStyle.SP_ArrowLeft (52): 图标箭头指向左。
- QStyle.SP_ArrowRight (53): 图标箭头指向右。
- QStyle.SP_ArrowBack (54): 当布局方向为Qt.LeftToRight时,等效于SP_ArrowLeft ,否则为SP_ArrowRight。
- QStyle.SP_ArrowForward (55): 当布局方向为Qt.LeftToRight时,等效于SP_ArrowRight ,否则为SP_ArrowLeft。
- QStyle.SP_DirHomeIcon (56): 主目录图标。
- QStyle.SP_CommandLink (57): 用于指示Vista风格命令链接字形的图标。
- QStyle.SP_VistaShield (58): 用于指示Windows Vista上的UAC提示的图标。在所有其他平台上,这将返回一个空的像素图或图标。
- QStyle.SP_BrowserReload (59): 指示应重新加载当前页面的图标。
- QStyle.SP_BrowserStop (60): 指示页面加载应停止的图标。
- QStyle.SP_MediaPlay (61): 指示媒体应开始播放的图标。
- QStyle.SP_MediaStop (62): 指示媒体应停止播放的图标。
- QStyle.SP_MediaPause (63): 指示媒体应暂停播放的图标。
- QStyle.SP_MediaSkipForward (64): 指示媒体应向前跳的图标。
- QStyle.SP_MediaSkipBackward (65): 指示媒体应向后跳的图标。
- QStyle.SP_MediaSeekForward (66): 表示媒体应向前看的图标。
- QStyle.SP_MediaSeekBackward (67): 指示媒体应向后搜索的图标。
- QStyle.SP_MediaVolume (68): 指示音量控制的图标。
- QStyle.SP_MediaVolumeMuted (69): 表示音量控制已静音的图标。
- QStyle.SP_LineEditClearButton (70): QLineEdit中标准清除按钮的图标。这个枚举值是在Qt 5.2中添加的。
测试
测试代码显示Qt的内置图标,完整代码如下:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QColor,QIcon
from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, QToolButton, QStyle
class DemoIcon(QWidget):
def __init__(self, parent=None):
super(DemoIcon, self).__init__(parent)
# 设置窗口标题
self.setWindowTitle('实战PyQt5: 内置图标演示')
self.initUi()
def initUi(self):
layout = QGridLayout()
line_count = 16 #每一行的显示个数
index = 0
#根据Qt的枚举变量来显示图标
for key in dir(QStyle):
value = getattr(QStyle, key)
if isinstance(value, QStyle.StandardPixmap):
if key != 'SP_CustomBase' and value < 71:
print (key, value)
btn = QToolButton()
btn.setFixedSize(32,32)
btn.setIcon(QApplication.style().standardIcon(value))
btn.setToolTip('{0}: {1}'.format(key, value))
layout.addWidget(btn, index//line_count, index % line_count)
index += 1
self.setLayout(layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = DemoIcon()
window.show()
sys.exit(app.exec())
运行结果如下图:
本文知识点
- QIcon类提供了处于不同模式和状态下的可缩放图标。
- 使用Qt内置图标。
- PyQt中根据枚举值得到枚举变量名。
喜欢的人,请多多关注,评论,收藏,点赞,和转发。
猜你喜欢
- 2024-12-17 Qt使用教程:创建Qt Quick UI表单(三)
- 2024-12-17 一小例子,了解 TCP 通讯流程 | Qt 示例
- 2024-12-17 如何使用QT编写自己的串口调试助手软件
- 2024-12-17 Qt pro文件中的常用宏说明 qt pro宏定义
- 2024-12-17 Qt Creator 源码学习笔记01,初识QTC
- 2024-12-17 QT学习:statusBar的使用,创建控件添加到statusBar上面
- 2024-12-17 一口气,了解 Qt 的所有 IPC 方式 | Qt 速学
- 2024-12-17 Qt线程QThread开启和安全退出 qt线程怎么安全关闭
- 2024-12-17 Qt之使用socket实现远程控制 qt使用mqtt
- 2024-12-17 C/C++编程笔记:编写完成了一个C/C++程序,如何做一个界面出来?
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- md5 sha1 (32)
- mybatis plus page (35)
- semaphore 使用详解 (32)
- update from 语句 (32)
- vue @scroll (38)
- 堆栈区别 (33)
- 在线子域名爆破 (32)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)