{"id":29127778,"url":"https://github.com/creeper5820/creeper-qt","last_synced_at":"2025-06-30T01:01:58.774Z","repository":{"id":261828472,"uuid":"884925787","full_name":"creeper5820/creeper-qt","owner":"creeper5820","description":"A lightweight Qt5 UI integration library that simplifies UI development.","archived":false,"fork":false,"pushed_at":"2025-06-28T23:50:01.000Z","size":16261,"stargazers_count":114,"open_issues_count":0,"forks_count":19,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2025-06-29T00:26:35.567Z","etag":null,"topics":["cpp","material-design","md3","qt5"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/creeper5820.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2024-11-07T16:25:39.000Z","updated_at":"2025-06-29T00:10:01.000Z","dependencies_parsed_at":"2024-12-11T19:24:29.354Z","dependency_job_id":"dd27e1e4-d0c6-4dd4-9b2a-8547f2d39eb7","html_url":"https://github.com/creeper5820/creeper-qt","commit_stats":null,"previous_names":["creeper5820/creeper-qt"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/creeper5820/creeper-qt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creeper5820%2Fcreeper-qt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creeper5820%2Fcreeper-qt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creeper5820%2Fcreeper-qt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creeper5820%2Fcreeper-qt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/creeper5820","download_url":"https://codeload.github.com/creeper5820/creeper-qt/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/creeper5820%2Fcreeper-qt/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262690387,"owners_count":23349167,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","material-design","md3","qt5"],"created_at":"2025-06-30T01:01:52.333Z","updated_at":"2025-06-30T01:01:58.670Z","avatar_url":"https://github.com/creeper5820.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=center\u003e\n\n\u003cdiv align=center\u003e\u003cimg src=\"doc/image/creeper-qt.jpg\" width=400\u003e\u003c/div\u003e\n\n\u003ch1\u003eCREEPER-QT（重构中）\u003c/h1\u003e\n\n[组件文档](./doc/widgets.md) | [主题文档](./doc/utility.md) | [视频演示](https://www.bilibili.com/video/BV1GAq5YZEtr/?share_source=copy_web\u0026vd_source=64f4d9d099bf51aa199961a8349d034b)\n\n![GitHub last commit](https://img.shields.io/github/last-commit/creeper5820/creeper-qt?style=for-the-badge\u0026labelColor=101418\u0026color=9ccbfb) ![GitHub Repo stars](https://img.shields.io/github/stars/creeper5820/creeper-qt?style=for-the-badge\u0026labelColor=101418\u0026color=b9c8da) ![GitHub repo size](https://img.shields.io/github/repo-size/creeper5820/creeper-qt?style=for-the-badge\u0026labelColor=101418\u0026color=d3bfe6)\n\n`creeper-qt` 是基于 `Qt5` 开发的 UI 集成库，轻量简洁，组件外观大体遵循 `Google Material Design3`，同时改造了老式的命令式调用，使组件构造和配置可以在同一时间完成，添加了主题管理，支持切换明亮和黑暗主题和各种配色，动效部分基于 PID 控制器和弹簧模型等迭代算法，带来更流畅的动画体验和打断效果\n\n\u003c/div\u003e\n\n## 效果展示\n\n\u003cimg src=\"doc/image/example-widgets.png\" title=\"\" alt=\"example-widgets\" data-align=\"center\"\u003e\n\n\u003cimg src=\"doc/image/example-login.png\" title=\"\" alt=\"example-login\" data-align=\"center\"\u003e\n\n\u003cimg src=\"doc/image/blue-style-widgets.png\" title=\"\" alt=\"buttons\" data-align=\"center\"\u003e\n\n## 调用示例\n\n使用 Cmake 导入\n\n```cmake\ncmake_minimum_required(VERSION 3.22)\n\nproject(hello-world)\n\n# yaml-cpp 和 Qt5 是项目依赖的库，记得导入\nfind_package(Qt5 REQUIRED COMPONENTS Widgets)\nfind_package(yaml-cpp REQUIRED)\nfind_package(creeper-qt REQUIRED)\n\n# 在 Windows 下, 安装目录如果没有暴露在环境变量, \n# 需要手动指定一下, 项目才能找到头文件\n# dll 文件在我这能找到, 没有在其他电脑上测过, 可能需要注意一下\n# include_directories(D:/Software/msys2/usr/include/)\n\nset(CMAKE_AUTOMOC ON)\nset(CMAKE_AUTORCC ON)\nset(CMAKE_AUTOUIC ON)\n\nadd_executable(${PROJECT_NAME}\n    main.cc\n)\ntarget_link_libraries(${PROJECT_NAME}\n    creeper-qt::creeper-qt\n    Qt5::Widgets yaml-cpp\n)\n```\n\n然后在项目中使用：\n\n```cpp\n#include \u003c ... \u003e\n\nint main(int argc, char* argv[]) {\n    using namespace creeper;\n\n    // Qt 运行时初始化\n    auto application = new QApplication { argc, argv };\n\n    // 创建主题管理器，可以传入主题包\n    auto theme_manager = ThemeManager { kBlueMikuThemePack };\n\n    namespace pro = filled_button::pro;\n    auto button   = FilledButton {\n        pro::ThemeManager { theme_manager }, // 与主题管理器绑定\n        pro::FixedSize { 100, 50 },          // 设置固定大小\n        pro::Text { \"你好世界\" },            // 设置文字\n        pro::Clickable { [] { qDebug() \u003c\u003c \"Hello World\"; } },\n    };\n    button.show();\n\n    // 将主题应用到注册过的组件中\n    theme_manager.apply_theme();\n\n    return application-\u003eexec();\n}\n```\n\n## 安装指南\n\n### 项目依赖\n\n- `gcc-13` 及以上，支持完整 range 等特性\n- `cmake`\n- `yaml-cpp`\n- `eigen`\n- `qt-5`\n\n```zsh\n# on arch linux\nsudo pacman -S yaml-cpp eigen qt5-base\n\n# on ubuntu\n# ubuntu 默认 gcc 版本比较低，建议使用 ppa 下载较新的版本\n# 或者直接下载二进制文件放进环境中\nsudo apt install libyaml-cpp-dev libeigen3-dev qtbase5-dev\n```\n\n### 方式一 直接使用源文件\n\n把项目拉下来吧\n\n```bash\ncd path/to/your/project/lib/dir/\ngit clone https://github.com/creeper5820/creeper-qt\n```\n\nEdit your `CMakeLists.txt`:\n\n```cmake\ninclude_directories(${库的根路径/include})\nadd_executable(${EXAMPLE_NAME}\n    ${这个库所有的源文件(包括头文件)}\n    ${这个库所有的QRC文件}\n)\n```\n\n### 方式二 Linux 平台编译安装\n\n```bash\n# 下载这个项目\ngit clone https://github.com/creeper5820/creeper-qt\n# 进入项目根目录\ncd creeper-qt\n# build\nmkdir build \u0026\u0026 cd build\ncmake .. \u0026\u0026 make -j\n# 下载到全局环境中，理论上是/usr/local里面\nsudo make install\n```\n\n### 方式三 Windows 平台编译安装\n\n我推荐使用MSYS2环境使用这个库: [MYSY2-INSTALLATION](https://www.msys2.org/docs/installer/)\n\n\u003cimg src=\"doc/image/windows-neofetch.png\" title=\"\" alt=\"win\" data-align=\"center\"\u003e\n\n看呐, 我没有使用Linux (\n\n不得不说, 在Windows使用`zsh`和`pacman`包管理是一件令人惬意的事情\n\n切入正题, 进入MSYS2终端\n\n```sh\n## 先刷新一下软件包数据\npacman -Sy\n\n## 安装编译使用的工具链\npacman -S  mingw-w64-x86_64-toolchain\n\n## 安装 Qt5\npacman -S mingw64/mingw-w64-x86_64-qt5\n\n## 安装依赖\npacman -S mingw-w64-x86_64-eigen3 mingw-w64-x86_64-yaml-cpp\n\n## 如果依赖找不到可以搜索一下对应版本的包, 找到 mingw 的版本就行\npacman -Ss eigen3\n```\n\n到这里就可以编译这个库了, 如果还是会有一些依赖问题, 可以Google一下如何在MSYS2中安装QT5\n\n```sh\n## 依然是在MSYS2环境中\n## 进入项目根目录\nmkdir build\n\n## 在根目录进行项目配置\n## 请务必使用\"MinGW Makefiles\"\n## CMAKE_INSTALL_PREFIX 参数指定了安装目录, \n## 默认的下载目录一般会是 C:/Program Files (x86)/\n## 会提示没有权限\ncmake -G \"MinGW Makefiles\" -B build -DCMAKE_INSTALL_PREFIX=\"D:/Software/msys2/usr/\"\n\n## 编译之\n## 或者在build目录下使用 mingw32-make -j\ncmake --build build\n\n## 安装库, 注意调用的是mingw的make\n## 直接使用make可能会出现错误\ncd build \u0026\u0026 mingw32-make install\n\n## 可以查看所有文件的安装位置\ncat install_manifest.txt\n\n## 启动实例程序\n./widgets.exe\n```\n\n需要注意的是, 如果在本机而不是MSYS2中打开编译好的可执行文件, 会报找不到Qt的dll, 因为在MSYS2下载的Qt没有暴露在Windows环境中\n\n## 风格约定\n\n### 绘图函数调用的参数遵从下面的顺序\n\n1. 内容项，类似于 Text\n2. 颜色配置项\n3. 形状配置项\n\n## 待做事项\n\n- [ ] 增加更多的组件\n\n- [ ] 按钮的禁止效果\n\n- [ ] 增加视图容器，原生的不可用\n\n- [ ] 给自己做一个设置中心吧\n\n- [ ] 做一个日历模组\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcreeper5820%2Fcreeper-qt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcreeper5820%2Fcreeper-qt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcreeper5820%2Fcreeper-qt/lists"}