{"id":26190767,"url":"https://github.com/yang1206/qiconkit","last_synced_at":"2026-04-19T22:34:11.960Z","repository":{"id":280358509,"uuid":"941520458","full_name":"yang1206/QIconKit","owner":"yang1206","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-16T09:49:41.000Z","size":5835,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-26T10:50:41.695Z","etag":null,"topics":["cpp","fontawesome","icons","iconset","lucide-icons","qt","qt6","remixicons"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yang1206.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-02T13:47:34.000Z","updated_at":"2025-03-16T09:49:44.000Z","dependencies_parsed_at":"2025-03-07T10:46:20.235Z","dependency_job_id":null,"html_url":"https://github.com/yang1206/QIconKit","commit_stats":null,"previous_names":["yang1206/qiconkit"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/yang1206/QIconKit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yang1206%2FQIconKit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yang1206%2FQIconKit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yang1206%2FQIconKit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yang1206%2FQIconKit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yang1206","download_url":"https://codeload.github.com/yang1206/QIconKit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yang1206%2FQIconKit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32025774,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","fontawesome","icons","iconset","lucide-icons","qt","qt6","remixicons"],"created_at":"2025-03-12T00:57:12.223Z","updated_at":"2026-04-19T22:34:11.943Z","avatar_url":"https://github.com/yang1206.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# QIconKit\n\n[![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0)\n![C++](https://img.shields.io/badge/C%2B%2B-17-blue.svg)\n![Qt](https://img.shields.io/badge/Qt-5%2F6-green.svg)\n\nQIconKit 是一个简单易用的 Qt 图标库，为您的 Qt 应用程序提供丰富的图标集合。该库支持多种流行的图标集，包括 Material Design、Remix、Lucide 和 Font Awesome 等，让您可以轻松地为应用添加现代化的图标。\n\n\n## 特性\n\n- 🎨 **多种图标集合**：Material Design、Remix Icon、Lucide 和 Font Awesome\n- 🌈 **多种样式变体**：Material Icons 支持 Filled、Outlined、Rounded、Sharp 等变体\n- 🔄 **动态颜色**：可以轻松更改图标颜色\n- ✨ **动画图标**：内置多种动画效果，如旋转、脉冲、弹跳等\n- 🔍 **高 DPI 支持**：图标在高分辨率显示器上也能保持清晰\n- 🧩 **简单集成**：易于集成到 Qt 项目中，支持 CMake\n\n## 支持的图标集\n\n### Material Icons\n- **Filled**: 默认填充样式 (~2000 图标)\n- **Outlined**: 轮廓线样式\n- **Rounded**: 圆角样式\n- **Sharp**: 尖角样式\n\n### Remix Icons\n现代风格的图标集，提供了丰富的图标选择 \n\n### Lucide Icons\n简洁明了的线条图标 \n\n### Font Awesome Icons\n世界上最受欢迎的图标集之一\n\n## 动画类型\n\nQIconKit 提供多种动画效果，让您的应用界面更加生动：\n\n- **Spin**: 旋转动画，适用于加载指示\n- **Pulse**: 脉冲效果，图标大小周期性变化\n- **Bounce**: 弹跳效果，适用于提示和通知\n- **Shake**: 摇晃效果，适用于警告和错误提示\n- **Fade**: 淡入淡出效果\n- **Blink**: 闪烁效果，适用于需要引起注意的元素\n- **Beat**: 心跳效果，适合表示活动状态\n- **Flip**: 翻转效果，适合状态切换\n\n\n## 功能演示\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./docs/Animation.gif\" alt=\"动画图标演示\" width=\"80%\"\u003e\n  \u003cp\u003e\u003ci\u003eQIconKit动画图标效果展示\u003c/i\u003e\u003c/p\u003e\n  \n  \u003cimg src=\"./docs/Examples.gif\" alt=\"按钮动画展示\" width=\"80%\"\u003e\n  \u003cp\u003e\u003ci\u003e图标浏览器\u003c/i\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n## 系统要求\n\n- C++17 兼容的编译器\n- Qt 5.15+ 或 Qt 6.x\n- CMake 3.16+\n\n## 安装\n\n### 方法 1：使用 CMake FetchContent（推荐）\n\n在你的 CMakeLists.txt 中添加：\n```cmake\ninclude(FetchContent)\nFetchContent_Declare(\n    QIconKit\n    GIT_REPOSITORY https://github.com/yang1206/QIconKit.git\n    GIT_TAG main\n)\nFetchContent_MakeAvailable(QIconKit)\n\ntarget_link_libraries(YourTarget PRIVATE QIconKit::QIconKit)\n```\n\n### 方法 2：手动构建和安装\n\n```bash\n# Clone 仓库\ngit clone https://github.com/yang1206/QIconKit.git\ncd QIconKit\n\n# 创建构建目录\nmkdir build \u0026\u0026 cd build\n\n# 配置项目\ncmake ..\n\n# 编译\ncmake --build . --config Release\n\n# 安装（可选）\ncmake --install .\n```\n\n然后在你的 CMakeLists.txt 中添加：\n\n```cmake\nfind_package(QIconKit REQUIRED)\ntarget_link_libraries(your_target PRIVATE QIconKit::QIconKit)\n```\n\n## 使用方法\n\n### 初始化\n\n在使用任何图标之前，需要先初始化库：\n\n```cpp\n#include \u003cQIconKit/qiconkit.h\u003e\n\nint main(int argc, char *argv[]) {\n    QApplication app(argc, argv);\n    \n    // 初始化图标库\n    QIconKit::QIconKit::initialize();\n    \n    // 现在可以使用图标了\n    // ...\n    \n    return app.exec();\n}\n```\n\n### 基本用法\n\n```cpp\n#include \u003cQIconKit/qiconkit.h\u003e\n#include \u003cQPushButton\u003e\n\n// 创建一个带有 Material Design 图标的按钮\nQPushButton button;\nbutton.setIcon(MaterialFilledIcon(Home));\nbutton.show();\n```\n\n### 设置图标颜色\n\n```cpp\n// 设置自定义颜色\nbutton.setIcon(MaterialFilledIcon(Home, 32, Qt::red));\n```\n\n### 各图标类型示例\n\n```cpp\n// Material Design 图标\nbutton1.setIcon(MaterialFilledIcon(Home));\nbutton2.setIcon(MaterialOutlinedIcon(Home));\nbutton3.setIcon(MaterialRoundedIcon(Home));\nbutton4.setIcon(MaterialSharpIcon(Home));\n\n// Remix 图标\nbutton6.setIcon(RemixIcon(Home));\n\n// Lucide 图标\nbutton7.setIcon(LucideIcon(Home));\n\n// Font Awesome 图标\nbutton8.setIcon(FontAwesomeIcon(Home));\n```\n\n### 动画图标使用\n\n#### 创建独立动画图标\n\n```cpp\n#include \u003cQIconKit/qiconkit.h\u003e\n#include \u003cQIconKit/animated_icon.h\u003e\n\n// 创建旋转的加载图标\nQIconKit::AnimatedIcon* loadingIcon = AnimatedRemixIcon(\n    Loader4Line, QIconKit::AnimationType::Spin, 24, Qt::blue);\nlayout-\u003eaddWidget(loadingIcon);\n\n// 创建心跳效果的通知图标\nQIconKit::AnimationParams params;\nparams.duration = 1500;\nparams.maxScale = 1.3;\nQIconKit::AnimatedIcon* notifyIcon = AnimatedMaterialFilledIcon(\n    Notifications, QIconKit::AnimationType::Beat, 24, Qt::red, params);\nlayout-\u003eaddWidget(notifyIcon);\n\n// 控制动画\nloadingIcon-\u003estart();   // 开始动画\nnotifyIcon-\u003epause();    // 暂停动画\nnotifyIcon-\u003eresume();   // 恢复动画\nloadingIcon-\u003estop();    // 停止动画\n```\n\n#### 将动画图标附加到按钮\n\n```cpp\n// 创建按钮\nQPushButton* loadButton = new QPushButton(\"加载中\");\n\n// 创建动画图标并附加到按钮\nQIconKit::AnimatedIcon* spinIcon = AnimatedRemixIcon(\n    Loader4Line, QIconKit::AnimationType::Spin, 24, Qt::blue);\nspinIcon-\u003eattachToButton(loadButton);\n\n// 控制动画\nspinIcon-\u003estart();  // 开始动画\n// ... 按钮正常使用，图标会自动更新 ...\nspinIcon-\u003estop();   // 停止动画\n```\n\n#### 自定义动画参数\n\n```cpp\n// 创建自定义动画参数\nQIconKit::AnimationParams blinkParams;\nblinkParams.duration = 1000;    // 动画持续时间（毫秒）\nblinkParams.loopCount = 5;      // 循环次数，-1表示无限循环\nblinkParams.autoStart = false;  // 是否自动开始动画\nblinkParams.opacity = 0.2;      // 最低透明度（用于闪烁动画）\n\n// 创建警告图标\nQIconKit::AnimatedIcon* warningIcon = AnimatedRemixIcon(\n    AlarmWarningFill, QIconKit::AnimationType::Blink, 24, Qt::yellow, blinkParams);\n\n// 手动启动动画\nwarningIcon-\u003estart();\n```\n\n## 图标浏览器\n\nQIconKit 包含一个图标浏览器示例，您可以通过以下命令运行：\n\n```bash\n./bin/QIconKitExamples\n```\n\n图标浏览器提供了一个直观的界面，让您可以浏览所有可用的图标，支持搜索和颜色自定义功能，以及查看各种动画效果。\n\n## 构建选项\n\n- `BUILD_SHARED_LIBS`: 构建动态库 (默认: ON)\n- `QtICON_BUILD_EXAMPLES`: 构建示例程序 (默认: ON)\n\n## 自定义图标工厂\n\n如果您需要创建自己的图标工厂，可以继承 `FontIconProvider` 类：\n\n```cpp\nclass MyIconFactory : public QIconKit::FontIconProvider {\npublic:\n    static MyIconFactory\u0026 instance() {\n        static MyIconFactory s_instance;\n        return s_instance;\n    }\n    \n    QIcon myIcon(int iconCode, int size, const QColor\u0026 color) const {\n        return iconFromCode(iconCode, size, color);\n    }\n    \nprivate:\n    MyIconFactory() \n        : FontIconProvider(\"My Icon Font\", \":/fonts/my_icon_font.ttf\") {\n    }\n};\n```\n\n## 注意事项\n\n1. 图标大小\n   - Material Icons 默认大小为 24px\n   - 其他图标默认大小为 16px\n   - 可以通过参数自定义大小\n\n2. 动画图标性能\n   - 大量动画图标同时运行可能会影响性能\n   - 对于不可见的动画，建议使用 `pause()` 暂停以节省资源\n   - 使用 `attachToButton()` 方法时，只有动画运行时才会更新按钮图标\n\n## 许可证\n\n此项目采用 LGPL V3 许可证 - 详情请参阅 [LICENSE](LICENSE) 文件。\n\n## 致谢\n\n- [Material Design Icons](https://fonts.google.com/icons)\n- [Remix Icons](https://remixicon.com/)\n- [Lucide Icons](https://lucide.dev/)\n- [Font Awesome](https://fontawesome.com/)\n\n## 贡献\n\n欢迎贡献！如果您想为 QIconKit 添加新功能、修复问题或改进文档，请提交 Pull Request。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyang1206%2Fqiconkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyang1206%2Fqiconkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyang1206%2Fqiconkit/lists"}