Skip to content

Latest commit

 

History

History
125 lines (107 loc) · 4.35 KB

File metadata and controls

125 lines (107 loc) · 4.35 KB

焦点检测器演示说明

快速开始

1. 编译项目

cd focus_detector_qt
mkdir build && cd build
cmake ..
make -j$(nproc)

2. 运行应用程序

# 方式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 获得焦点

测试步骤

基础测试

  1. 启动应用程序,观察主窗口界面
  2. 点击其他应用程序,观察:
    • 窗口背景变为白色
    • 状态指示器变为橙色"⚠ 窗口失去焦点"
    • "失去焦点时间"文本框显示精确时间
    • 控制台输出失去焦点日志
  3. 重新点击焦点检测器窗口,观察:
    • 窗口背景变为浅蓝色
    • 状态指示器变为绿色"✓ 窗口已获得焦点"
    • "获得焦点时间"文本框显示精确时间
    • 控制台输出获得焦点日志

统一窗口测试 🆕

  1. 点击任意窗口中的"🪟 打开新窗口"按钮
  2. 观察新窗口的特点:
    • 窗口功能与原窗口完全一致
    • 窗口标识区域显示不同颜色和ID
    • 按钮文本显示"关闭窗口"而非"退出程序"
  3. 测试级联创建:从新窗口再创建更多窗口
  4. 在多个窗口间切换,观察:
    • 每个窗口独立记录焦点状态
    • 时间记录互不影响
    • 控制台显示不同窗口的日志
  5. 测试智能关闭:
    • 主窗口:点击"❌ 退出程序"关闭整个应用
    • 其他窗口:点击"❌ 关闭窗口"只关闭当前窗口

精度测试

  1. 快速在窗口间切换
  2. 观察时间记录的毫秒级精度
  3. 验证控制台日志的时间戳准确性

焦点切换时间差测试 🆕

  1. 创建多个窗口并在窗口间切换
  2. 观察"焦点切换耗时"文本框的时间差显示
  3. 验证颜色编码:
    • 快速切换(<500ms)显示绿色
    • 中等切换(500ms-2s)显示橙色
    • 慢速切换(>2s)显示红色
  4. 检查控制台日志中的时间差记录
  5. 验证重复焦点事件被正确忽略

技术特点

实时响应:焦点变化立即反馈
毫秒精度:时间记录精确到毫秒
统一窗口设计:所有窗口功能完全一致 🆕
无限制多窗口:级联创建检测窗口
智能窗口管理:主窗口和普通窗口自动区分 🆕
双重记录:界面显示 + 控制台日志
可视化反馈:背景颜色 + 状态指示器
用户友好:直观统一的界面设计

应用场景

  • 🔧 开发调试:监控应用程序焦点状态
  • 📊 用户行为分析:统计窗口使用时间
  • 🧪 测试验证:验证焦点切换逻辑
  • 📚 学习演示:Qt6焦点事件处理示例