QIconEngine Class
QIconEngine 类为QIcon 渲染器提供了一个抽象基类。更多
Header: | #include <QIconEngine> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
- 所有成员(包括继承成员)的列表
- QIconEngine 属于绘画类。
公共类型
struct | ScaledPixmapArgument |
enum | IconEngineHook { IsNullHook, ScaledPixmapHook } |
公共函数
QIconEngine() | |
virtual | ~QIconEngine() |
virtual QSize | actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state) |
virtual void | addFile(const QString &fileName, const QSize &size, QIcon::Mode mode, QIcon::State state) |
virtual void | addPixmap(const QPixmap &pixmap, QIcon::Mode mode, QIcon::State state) |
virtual QList<QSize> | availableSizes(QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) |
virtual QIconEngine * | clone() const = 0 |
virtual QString | iconName() |
virtual bool | isNull() |
virtual QString | key() const |
virtual void | paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) = 0 |
virtual QPixmap | pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state) |
virtual bool | read(QDataStream &in) |
virtual QPixmap | scaledPixmap(const QSize &size, QIcon::Mode mode, QIcon::State state, qreal scale) |
virtual void | virtual_hook(int id, void *data) |
virtual bool | write(QDataStream &out) const |
详细说明
图标引擎为QIcon 提供渲染功能。每个图标都有一个相应的图标引擎,负责按照要求的尺寸、模式和状态绘制图标。
图标由paint() 函数渲染,图标还可以通过pixmap() 函数以像素图的形式获取(默认实现仅使用paint() 来实现)。addPixmap() 函数可用于向图标引擎添加新的像素图,而QIcon 可用于添加专门的自定义像素图。
paint(),pixmap(), 和addPixmap() 函数都是虚拟的,因此可以在 QIconEngine 的子类中重新实现。
另请参阅 QIconEnginePlugin 。
成员类型文档
enum QIconEngine::IconEngineHook
这些枚举值用于virtual_hook() 以允许在不破坏二进制兼容性的情况下对图标引擎进行额外查询。
常量 | 值 | 说明 |
---|---|---|
QIconEngine::IsNullHook | 3 | 允许查询该引擎是否表示空图标。virtual_hook() 的data 参数是一个指向 bool 的指针,如果图标为空,该指针可设置为 true。该枚举值是在 Qt 5.7 中添加的。 |
QIconEngine::ScaledPixmapHook | 4 | 提供了一种方法来获取根据给定比例(通常等于设备像素比)缩放的像素图。virtual_hook() 函数的data 参数是一个ScaledPixmapArgument 指针,其中包含输入和输出参数。该枚举值在 Qt 5.9 中添加。 |
另请参阅 virtual_hook()。
成员函数文档
QIconEngine::QIconEngine()
构建图标引擎。
[virtual noexcept]
QIconEngine::~QIconEngine()
摧毁图标引擎。
[virtual]
QSize QIconEngine::actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state)
返回引擎为所请求的size 、mode 和state 所提供图标的实际大小。默认实现返回给定的size 。
返回的大小与设备无关,单位为像素(这与高分辨率像素图有关)。
[virtual]
void QIconEngine::addFile(const QString &fileName, const QSize &size, QIcon::Mode mode, QIcon::State state)
由QIcon::addFile() 调用。通过给定的fileName,size,mode 和state 从文件中添加专门的像素图。默认的基于像素图的引擎会存储所有提供的文件名,如果像素图的大小与请求的图标大小一致,它就会按需加载像素图,而不是使用按比例缩放的像素图。采用可缩放矢量格式的自定义图标引擎可以忽略任何额外文件。
[virtual]
void QIconEngine::addPixmap(const QPixmap &pixmap, QIcon::Mode mode, QIcon::State state)
由QIcon::addPixmap() 调用。为给定的mode 和state 添加专门的pixmap 。默认的基于像素图的引擎会存储所提供的任何像素图,如果像素图的大小与所请求的图标大小一致,则会使用这些像素图而不是按比例缩放的像素图。采用可缩放矢量格式的自定义图标引擎可以忽略任何额外的像素图。
[virtual]
QList<QSize> QIconEngine::availableSizes(QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off)
返回特定mode 和state 引擎中包含的所有图像的尺寸。
[pure virtual]
QIconEngine *QIconEngine::clone() const
重新实现此方法以返回该图标引擎的克隆。
[virtual]
QString QIconEngine::iconName()
返回创建引擎时使用的名称(如果有)。
[virtual]
bool QIconEngine::isNull()
如果该图标引擎表示空QIcon ,则返回 true。
注: 如果图标引擎没有重新实现此函数,则实际工作由virtual_hook() 方法完成,因此此方法取决于图标引擎支持情况,可能无法在所有图标引擎上运行。
[virtual]
QString QIconEngine::key() const
返回标识该图标引擎的键值。
[pure virtual]
void QIconEngine::paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state)
使用给定的painter ,将带有所需mode 和state 的图标绘制到矩形rect 中。
[virtual]
QPixmap QIconEngine::pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state)
以像素图的形式返回图标,其中包含所需的size 、mode 和state 。默认实现会创建一个新的像素图,并调用paint() 填充。
[virtual]
bool QIconEngine::read(QDataStream &in)
从QDataStream in 读取图标引擎内容。如果内容已读取,则返回 true;否则返回false
。
QIconEngine默认实现总是返回 false。
[virtual]
QPixmap QIconEngine::scaledPixmap(const QSize &size, QIcon::Mode mode, QIcon::State state, qreal scale)
返回给定的size 、mode 、state 和scale 的像素图。
scale 参数通常等于显示器的设备像素比。大小以独立于设备的像素为单位。
注: 如果图标引擎没有重新实现此函数,实际工作将由virtual_hook() 方法完成,因此此方法取决于图标引擎的支持,可能无法在所有图标引擎上运行。
注: 某些引擎可能会将scale 转换为整数。
另请参阅 ScaledPixmapArgument 。
[virtual]
void QIconEngine::virtual_hook(int id, void *data)
附加方法,允许在不添加新的虚拟方法(且不破坏二进制兼容性)的情况下扩展QIconEngine 。data 的实际操作和格式取决于id 参数,而 参数实际上是IconEngineHook 枚举中的一个常量。
另请参见 IconEngineHook 。
[virtual]
bool QIconEngine::write(QDataStream &out) const
将此引擎的内容写入QDataStream out 。如果内容已写入,则返回true
;否则返回false
。
QIconEngine默认执行总是返回 false。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.