DtkGui
DTK Gui module
载入中...
搜索中...
未找到
diconproxyengine_p.h
1// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#ifndef DICONPROXYENGINE_H
6#define DICONPROXYENGINE_H
7
8#include <dtkgui_global.h>
9
10#include <QIconEngine>
11
12#include "dicontheme.h"
13
14DGUI_BEGIN_NAMESPACE
15
16class Q_DECL_HIDDEN DIconProxyEngine : public QIconEngine
17{
18public:
19 explicit DIconProxyEngine(const QString &iconName, DIconTheme::Options m_option);
20 virtual ~DIconProxyEngine() override;
21 void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) override;
22 QSize actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state) override;
23 QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state) override;
24
25 QString key() const override;
26 QIconEngine *clone() const override;
27 bool read(QDataStream &in) override;
28 bool write(QDataStream &out) const override;
29
30#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
31 QString iconName() override;
32#else
33 QString iconName() const override;
34#endif
35
36#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
37 QList<QSize> availableSizes(QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) override;
38#else
39 QList<QSize> availableSizes(QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const override;
40#endif
41
42#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
43 bool isNull() override;
44#endif
45 inline QString themeName() const { return m_iconThemeName; }
46
47 QString proxyKey();
48private:
49 void virtual_hook(int id, void *data) override;
50
51 void ensureEngine();
53 QString m_iconName;
54 QString m_iconThemeName;
55 QIconEngine *m_iconEngine = nullptr;
56 DIconTheme::Options m_option;
57};
58
59DGUI_END_NAMESPACE
60
61#endif // DICONPROXYENGINE_H
Definition diconproxyengine_p.h:17
Dtk 图标主题工具类