cd focus_detector_qt
mkdir build && cd build
cmake ..
make -j$(nproc)# 方式1:直接运行
cd build && ./appfocus_detector_qt
# 方式2:使用演示脚本
./run_demo.sh- 所有窗口:450x420像素,功能完全一致
- 主窗口标题:"焦点检测器 - 窗口-1 (主窗口)"
- 其他窗口标题:"焦点检测器 - 窗口-xxxx"
- 窗口标识区域:
- 🟢 主窗口:绿色背景 + "窗口ID: 窗口-1 (主窗口)"
- 🟠 其他窗口:橙色背景 + "窗口ID: 窗口-xxxx"
- 背景颜色:
- 🔵 有焦点:浅蓝色 (#E6F3FF)
- ⚪ 无焦点:白色
- 状态指示器:
- 🟢 绿色:✓ 窗口已获得焦点
- 🟠 橙色:⚠ 窗口失去焦点
- 获得焦点时间:精确到毫秒 (yyyy-MM-dd hh:mm:ss.zzz)
- 失去焦点时间:精确到毫秒 (yyyy-MM-dd hh:mm:ss.zzz)
- 焦点切换耗时 🆕:显示窗口获得焦点与全局最后失去焦点之间的时间差
- 绿色:< 500毫秒 (快速切换)
- 橙色:500毫秒 - 2秒 (中等切换)
- 红色:> 2秒 (慢速切换)
- 实时更新:焦点状态变化时自动更新
- 点击任意窗口中的"🪟 打开新窗口"按钮创建新窗口
- 所有窗口功能完全一致 - 使用同一个组件
- 每个窗口独立监控焦点状态
- 每个窗口有唯一ID:窗口-1, 窗口-2, 窗口-xxxx
- 级联创建: 任何窗口都可以创建更多新窗口
- 智能关闭: 主窗口"退出程序",其他窗口"关闭窗口"
控制台实时输出焦点变化日志:
焦点检测器已启动 - 2025-06-27 13:36:17.511
[2025-06-27 13:36:17.826] 窗口 窗口-1 获得焦点
[2025-06-27 13:36:20.156] 窗口 窗口-1 失去焦点
[2025-06-27 13:36:22.389] 窗口 窗口-2 获得焦点
- 启动应用程序,观察主窗口界面
- 点击其他应用程序,观察:
- 窗口背景变为白色
- 状态指示器变为橙色"⚠ 窗口失去焦点"
- "失去焦点时间"文本框显示精确时间
- 控制台输出失去焦点日志
- 重新点击焦点检测器窗口,观察:
- 窗口背景变为浅蓝色
- 状态指示器变为绿色"✓ 窗口已获得焦点"
- "获得焦点时间"文本框显示精确时间
- 控制台输出获得焦点日志
- 点击任意窗口中的"🪟 打开新窗口"按钮
- 观察新窗口的特点:
- 窗口功能与原窗口完全一致
- 窗口标识区域显示不同颜色和ID
- 按钮文本显示"关闭窗口"而非"退出程序"
- 测试级联创建:从新窗口再创建更多窗口
- 在多个窗口间切换,观察:
- 每个窗口独立记录焦点状态
- 时间记录互不影响
- 控制台显示不同窗口的日志
- 测试智能关闭:
- 主窗口:点击"❌ 退出程序"关闭整个应用
- 其他窗口:点击"❌ 关闭窗口"只关闭当前窗口
- 快速在窗口间切换
- 观察时间记录的毫秒级精度
- 验证控制台日志的时间戳准确性
- 创建多个窗口并在窗口间切换
- 观察"焦点切换耗时"文本框的时间差显示
- 验证颜色编码:
- 快速切换(<500ms)显示绿色
- 中等切换(500ms-2s)显示橙色
- 慢速切换(>2s)显示红色
- 检查控制台日志中的时间差记录
- 验证重复焦点事件被正确忽略
✅ 实时响应:焦点变化立即反馈
✅ 毫秒精度:时间记录精确到毫秒
✅ 统一窗口设计:所有窗口功能完全一致 🆕
✅ 无限制多窗口:级联创建检测窗口
✅ 智能窗口管理:主窗口和普通窗口自动区分 🆕
✅ 双重记录:界面显示 + 控制台日志
✅ 可视化反馈:背景颜色 + 状态指示器
✅ 用户友好:直观统一的界面设计
- 🔧 开发调试:监控应用程序焦点状态
- 📊 用户行为分析:统计窗口使用时间
- 🧪 测试验证:验证焦点切换逻辑
- 📚 学习演示:Qt6焦点事件处理示例