{"id":30614132,"url":"https://github.com/wch2012asd/timecontral-qt","last_synced_at":"2026-06-19T01:31:29.665Z","repository":{"id":306181631,"uuid":"1024625322","full_name":"wch2012asd/timecontral-qt","owner":"wch2012asd","description":"A modern Qt timeline widget with glassmorphism design","archived":false,"fork":false,"pushed_at":"2025-07-24T03:00:31.000Z","size":49,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-30T07:02:30.187Z","etag":null,"topics":["cpp","qt","timeline","widget"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wch2012asd.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-07-23T02:27:00.000Z","updated_at":"2025-07-24T03:00:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"0662f47c-54c5-453f-873e-82925a302fe2","html_url":"https://github.com/wch2012asd/timecontral-qt","commit_stats":null,"previous_names":["wch2012asd/timecontral-qt"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/wch2012asd/timecontral-qt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wch2012asd%2Ftimecontral-qt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wch2012asd%2Ftimecontral-qt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wch2012asd%2Ftimecontral-qt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wch2012asd%2Ftimecontral-qt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wch2012asd","download_url":"https://codeload.github.com/wch2012asd/timecontral-qt/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wch2012asd%2Ftimecontral-qt/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34514282,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-18T02:00:06.871Z","response_time":128,"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","qt","timeline","widget"],"created_at":"2025-08-30T07:01:31.723Z","updated_at":"2026-06-19T01:31:29.606Z","avatar_url":"https://github.com/wch2012asd.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Qt时间控件套件 (Qt Time Control Suite)\r\n\r\n一个功能完整的Qt时间控件套件，包含时间轴控件、日期选择器和时间播放控件。具有精美的现代化UI设计和丰富的交互功能，适用于时间管理、项目规划、数据可视化、媒体播放等多种场景。\r\n\r\n![Qt Time Control Suite Demo](screenshot.png)\r\n\r\n## ✨ 核心特性\r\n\r\n### 🕐 TimeControl - 时间轴控件\r\n- **磨砂玻璃背景**: 深天蓝色半透明磨砂质感，现代化视觉效果\r\n- **优雅的时间气泡**: 半透明淡绿色气泡显示当前时间\r\n- **无限滚动**: 支持无限制时间范围滚动，查看任意时间段\r\n- **智能拖拽**: 平滑的时间轴滚动，带阻尼效果\r\n- **双击定位**: 双击时间轴快速定位到整点时间\r\n- **滚轮缩放**: 鼠标滚轮缩放时间轴显示精度\r\n- **时间点标记**: 添加重要时间节点，支持自定义颜色和标签\r\n- **时间段显示**: 可视化时间段，适合项目进度展示\r\n\r\n### 📅 DateControl - 日期选择器\r\n- **现代化日历界面**: 清晰的月视图和年视图切换\r\n- **灵活的日期选择**: 支持单日期和日期范围选择\r\n- **自定义样式**: 可定制颜色主题和字体样式\r\n- **节假日标记**: 支持节假日和特殊日期标记\r\n- **快速导航**: 月份/年份快速跳转功能\r\n- **多语言支持**: 支持多种语言的日期显示\r\n\r\n### ⏯️ TimePlay - 时间播放控件\r\n- **媒体播放控制**: 播放、暂停、停止、快进、快退\r\n- **进度条显示**: 可视化播放进度和缓冲状态\r\n- **时间显示**: 当前时间和总时长显示\r\n- **音量控制**: 集成音量调节功能\r\n- **播放速度**: 支持变速播放功能\r\n- **循环模式**: 支持单曲循环、列表循环等模式\r\n\r\n### 🎨 统一的现代化设计\r\n- **平滑动画**: 丝滑的滚动和缩放动画效果\r\n- **响应式布局**: 自适应窗口大小，完美显示\r\n- **高度可定制**: 自定义背景、刻度、文本颜色\r\n- **透明窗口**: 支持透明背景，完美融入桌面环境\r\n\r\n## 文件结构\r\n\r\n```\r\n├── timecontral.h              # 时间轴控件头文件\r\n├── timecontral.cpp            # 时间轴控件实现文件\r\n├── timeContral_global.h       # 全局定义头文件\r\n├── timeContral.pro           # 库项目文件\r\n├── demo_window.h             # 演示窗口头文件\r\n├── demo_window.cpp           # 演示窗口实现文件\r\n├── demo_main.cpp             # 演示程序主文件\r\n├── demo.pro                  # 演示程序项目文件\r\n├── test_timecontral.pro      # 测试项目文件\r\n├── test_main.cpp             # 测试主程序\r\n├── test_timecontral_unit.h   # 单元测试头文件\r\n├── test_timecontral_unit.cpp # 单元测试实现\r\n└── README.md                 # 说明文档\r\n```\r\n\r\n## 编译和运行\r\n\r\n### 编译演示程序\r\n\r\n1. 确保已安装Qt 5.12或更高版本\r\n2. 打开命令行，进入项目目录\r\n3. 运行以下命令：\r\n\r\n```bash\r\nqmake demo.pro\r\nmake  # Linux/Mac\r\nnmake # Windows (使用MSVC)\r\nmingw32-make # Windows (使用MinGW)\r\n```\r\n\r\n4. 运行生成的可执行文件：\r\n\r\n```bash\r\n./bin/timecontral_demo  # Linux/Mac\r\nbin\\timecontral_demo.exe # Windows\r\n```\r\n\r\n### 编译测试程序\r\n\r\n```bash\r\nqmake test_timecontral.pro\r\nmake  # Linux/Mac\r\nnmake # Windows (使用MSVC)\r\n./test_timecontral  # 运行测试\r\n```\r\n\r\n### 编译库文件\r\n\r\n```bash\r\nqmake timeContral.pro\r\nmake  # Linux/Mac\r\nnmake # Windows (使用MSVC)\r\n```\r\n\r\n## 🚀 快速开始\r\n\r\n### 基本用法\r\n\r\n```cpp\r\n#include \"timecontral.h\"\r\n\r\n// 创建时间轴控件\r\nTimeContral *timeControl = new TimeContral(parent);\r\n\r\n// 设置24小时显示范围\r\nQDateTime today = QDateTime::currentDateTime();\r\nQDateTime startOfDay = QDateTime(today.date(), QTime(0, 0, 0));\r\nQDateTime endOfDay = QDateTime(today.date(), QTime(23, 59, 59));\r\n\r\n// 启用无限滚动模式（默认）\r\ntimeControl-\u003esetInfiniteScrollEnabled(true);\r\ntimeControl-\u003esetVisibleTimeRange(startOfDay, endOfDay);\r\n\r\n// 添加时间标记\r\ntimeControl-\u003eaddTimePoint(QDateTime::currentDateTime(), \"现在\", Qt::red);\r\ntimeControl-\u003eaddTimeSpan(\r\n    QDateTime::currentDateTime().addHours(1),\r\n    QDateTime::currentDateTime().addHours(3),\r\n    \"会议时间\", Qt::blue\r\n);\r\n\r\n// 设置当前时间（显示气泡）\r\ntimeControl-\u003esetCurrentTime(QDateTime::currentDateTime());\r\n```\r\n\r\n### 高级配置\r\n\r\n```cpp\r\n// 限制滚动范围\r\ntimeControl-\u003esetInfiniteScrollEnabled(false);\r\ntimeControl-\u003esetTimeRange(startTime, endTime);\r\n\r\n// 自定义外观\r\ntimeControl-\u003esetBackgroundColor(QColor(70, 130, 180, 200));\r\ntimeControl-\u003esetShowTimeBubble(true);\r\ntimeControl-\u003esetShowDateOnTimeline(true);\r\n\r\n// 设置缩放级别\r\ntimeControl-\u003esetZoomLevel(1.5);\r\n```\r\n\r\n### 事件处理\r\n\r\n```cpp\r\n// 时间项交互\r\nconnect(timeControl, \u0026TimeContral::timeItemClicked, [](int index) {\r\n    qDebug() \u003c\u003c \"点击时间项:\" \u003c\u003c index;\r\n});\r\n\r\nconnect(timeControl, \u0026TimeContral::timeItemDoubleClicked, [](int index) {\r\n    qDebug() \u003c\u003c \"双击时间项:\" \u003c\u003c index;\r\n});\r\n\r\n// 时间变化监听\r\nconnect(timeControl, \u0026TimeContral::currentTimeChanged, [](const QDateTime \u0026time) {\r\n    qDebug() \u003c\u003c \"当前时间:\" \u003c\u003c time.toString(\"yyyy-MM-dd hh:mm:ss\");\r\n});\r\n\r\n// 可见范围变化（滚动时触发）\r\nconnect(timeControl, \u0026TimeContral::visibleTimeRangeChanged, \r\n        [](const QDateTime \u0026start, const QDateTime \u0026end) {\r\n    qDebug() \u003c\u003c \"可见范围:\" \u003c\u003c start.toString() \u003c\u003c \"到\" \u003c\u003c end.toString();\r\n});\r\n```\r\n\r\n## 演示程序功能\r\n\r\n演示程序提供了完整的控件功能展示：\r\n\r\n### 控制面板\r\n- **时间范围设置**: 设置时间轴的最小和最大时间\r\n- **可见范围设置**: 设置当前可见的时间范围\r\n- **时间项管理**: 添加、删除时间点和时间段\r\n- **缩放控制**: 放大、缩小、重置缩放级别\r\n\r\n### 外观设置\r\n- **颜色设置**: 自定义背景色、刻度色、文本色\r\n- **显示选项**: 控制时间气泡和日期显示\r\n- **格式设置**: 自定义时间显示格式\r\n- **刻度高度**: 调整时间刻度的高度\r\n\r\n### 演示功能\r\n- **示例数据**: 加载预设的示例时间项\r\n- **实时演示**: 自动更新当前时间并添加随机事件\r\n- **数据导入导出**: 保存和加载时间轴数据\r\n\r\n### 事件日志\r\n- 显示所有用户操作和控件事件的日志\r\n- 实时更新状态信息\r\n\r\n## 📖 API 参考\r\n\r\n### 时间范围管理\r\n```cpp\r\n// 设置总时间范围（用于限制滚动）\r\nvoid setTimeRange(const QDateTime \u0026minTime, const QDateTime \u0026maxTime);\r\nQDateTime minTime() const;\r\nQDateTime maxTime() const;\r\n\r\n// 设置可见时间范围（当前显示的时间段）\r\nvoid setVisibleTimeRange(const QDateTime \u0026startTime, const QDateTime \u0026endTime);\r\nQDateTime visibleStartTime() const;\r\nQDateTime visibleEndTime() const;\r\n\r\n// 滚动模式控制\r\nvoid setInfiniteScrollEnabled(bool enabled);  // 启用/禁用无限滚动\r\nbool isInfiniteScrollEnabled() const;\r\n```\r\n\r\n### 时间项管理\r\n```cpp\r\n// 添加时间标记\r\nint addTimePoint(const QDateTime \u0026time, const QString \u0026label = QString(), \r\n                const QColor \u0026color = Qt::blue, const QVariant \u0026userData = QVariant());\r\n\r\nint addTimeSpan(const QDateTime \u0026startTime, const QDateTime \u0026endTime, \r\n               const QString \u0026label = QString(), const QColor \u0026color = Qt::green,\r\n               const QVariant \u0026userData = QVariant());\r\n\r\n// 管理时间项\r\nbool removeTimeItem(int index);\r\nvoid clearTimeItems();\r\nint timeItemCount() const;\r\nTimeItem timeItemAt(int index) const;\r\n\r\n// 选中状态\r\nvoid setCurrentTimeItem(int index);\r\nint currentTimeItem() const;\r\n```\r\n\r\n### 当前时间控制\r\n```cpp\r\nvoid setCurrentTime(const QDateTime \u0026time);  // 设置当前时间（显示气泡）\r\nQDateTime currentTime() const;\r\n```\r\n\r\n### 外观定制\r\n```cpp\r\n// 颜色设置\r\nvoid setBackgroundColor(const QColor \u0026color);\r\nvoid setScaleColor(const QColor \u0026color);\r\nvoid setTextColor(const QColor \u0026color);\r\n\r\n// 显示选项\r\nvoid setShowTimeBubble(bool show);           // 显示/隐藏时间气泡\r\nbool isShowTimeBubble() const;\r\nvoid setShowDateOnTimeline(bool show);       // 显示/隐藏日期\r\nbool isShowDateOnTimeline() const;\r\n\r\n// 其他外观\r\nvoid setScaleHeight(int height);             // 刻度高度\r\nvoid setTimeFormat(const QString \u0026format);   // 时间格式\r\n```\r\n\r\n### 缩放控制\r\n```cpp\r\nvoid zoomIn();                              // 放大\r\nvoid zoomOut();                             // 缩小\r\nvoid setZoomLevel(double level);            // 设置缩放级别 (0.1-10.0)\r\ndouble zoomLevel() const;\r\n```\r\n\r\n### 信号列表\r\n```cpp\r\n// 交互信号\r\nvoid timeItemClicked(int index);            // 时间项被点击\r\nvoid timeItemDoubleClicked(int index);      // 时间项被双击\r\nvoid currentTimeItemChanged(int index);     // 选中项改变\r\n\r\n// 时间变化信号\r\nvoid currentTimeChanged(const QDateTime \u0026time);                    // 当前时间改变\r\nvoid timeRangeChanged(const QDateTime \u0026minTime, const QDateTime \u0026maxTime);  // 时间范围改变\r\nvoid visibleTimeRangeChanged(const QDateTime \u0026startTime, const QDateTime \u0026endTime);  // 可见范围改变\r\n```\r\n\r\n## 🎮 交互说明\r\n\r\n### 鼠标操作\r\n- **拖拽**: 水平拖拽滚动时间轴，查看不同时间段\r\n- **双击**: 双击时间轴定位到对应的整点时间\r\n- **滚轮**: 滚动缩放时间轴显示精度\r\n- **悬停**: 鼠标悬停在时间项上显示详细信息\r\n\r\n### 键盘操作\r\n- 支持通过编程方式控制所有功能\r\n- 可集成自定义快捷键\r\n\r\n## 🎯 使用场景\r\n\r\n### 项目管理\r\n- 项目时间线展示\r\n- 里程碑标记\r\n- 进度可视化\r\n\r\n### 数据分析\r\n- 时间序列数据展示\r\n- 事件时间轴\r\n- 趋势分析\r\n\r\n### 系统监控\r\n- 实时状态显示\r\n- 历史事件回放\r\n- 性能指标时间轴\r\n\r\n### 日程管理\r\n- 日程安排可视化\r\n- 时间块管理\r\n- 会议时间展示\r\n\r\n## 🔧 技术特点\r\n\r\n### 性能优化\r\n- 高效的绘制算法，支持大量时间项\r\n- 智能的可见区域计算，只绘制必要内容\r\n- 平滑的动画效果，60fps流畅体验\r\n\r\n### 兼容性\r\n- 支持Qt 5.12及以上版本\r\n- 跨平台支持：Windows、Linux、macOS\r\n- 支持高DPI显示屏\r\n\r\n### 扩展性\r\n- 模块化设计，易于扩展\r\n- 丰富的信号系统，便于集成\r\n- 支持自定义样式和主题\r\n\r\n## 🐛 已知问题\r\n\r\n- 在某些Linux发行版上可能需要额外的字体配置\r\n- 高DPI屏幕上的文本渲染可能需要调整\r\n\r\n## 📝 更新日志\r\n\r\n### v1.0.0 (2025-01-23)\r\n- ✨ 全新的磨砂玻璃UI设计\r\n- 🚀 无限滚动功能\r\n- 🎯 双击定位到整点\r\n- 🎨 半透明气泡效果\r\n- 📱 透明窗口支持\r\n- ⚡ 平滑滚动动画\r\n- 🔧 完整的API接口\r\n\r\n## 📄 许可证\r\n\r\n本项目采用MIT许可证，详见LICENSE文件。\r\n\r\n## 🤝 贡献\r\n\r\n欢迎提交问题报告和功能请求！\r\n\r\n1. Fork 本项目\r\n2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)\r\n3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)\r\n4. 推送到分支 (`git push origin feature/AmazingFeature`)\r\n5. 创建 Pull Request\r\n\r\n## 📞 联系方式\r\n\r\n如有问题或建议，请通过以下方式联系：\r\n\r\n- 提交 Issue\r\n- 发送邮件\r\n- 创建 Discussion\r\n\r\n---\r\n\r\n⭐ 如果这个项目对你有帮助，请给个星标支持一下！","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwch2012asd%2Ftimecontral-qt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwch2012asd%2Ftimecontral-qt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwch2012asd%2Ftimecontral-qt/lists"}