# DPIDemo **Repository Path**: birdman1992/dpidemo ## Basic Information - **Project Name**: DPIDemo - **Description**: Qt5.15高分屏支持验证 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-02 - **Last Updated**: 2026-04-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Qt5.15 HighDPI 技术验证演示程序 ## 项目概述 这是一个用于验证和演示 Qt 5.15 高 DPI(High DPI)支持行为的技术演示程序。当前版本支持两种工作方式: - **默认启动**:作为 launcher 运行,自动尝试拉起 `HighDPI ON` 与 `HighDPI OFF` 两个 GUI 实例,用于并排对比。 - **单模式启动**:通过命令行参数仅启动一个 GUI 实例,便于单独观察某一种模式。 ## 启动方式 ### 默认启动:自动双开 ON/OFF 直接运行可执行文件: ```bash Qt5DPIDemo.exe ``` 预期用途: - 自动拉起 `HighDPI ON` 窗口 - 自动拉起 `HighDPI OFF` 窗口 - 便于将两个窗口并排放置进行对比 ### 单模式启动 仅启动 HighDPI ON: ```bash Qt5DPIDemo.exe --mode=on ``` 仅启动 HighDPI OFF: ```bash Qt5DPIDemo.exe --mode=off ``` 单模式适用于: - 单独检查 ON 或 OFF 模式界面 - 观察 OFF 模式中的问题复现区 - 单独导出某一模式的报告 ## 推荐演示方式 建议按以下顺序进行演示: 1. 先运行 `Qt5DPIDemo.exe`,观察是否拉起 ON/OFF 两个对比窗口。 2. 将两个窗口并排放置,比较窗口标题、状态栏和左侧信息面板中的模式标识。 3. 在 `HighDPI OFF` 窗口中优先查看问题复现区,观察小文本、位图模糊、固定像素 QSS 等示例。 4. 在 `HighDPI ON` 窗口中对照查看相同区域,确认其显示为缓解后的预期说明。 5. 分别在 ON/OFF 窗口中尝试导出报告,检查文件名是否带有 `_on` / `_off` 后缀。 ## 报告输出规则 代码当前定义的默认输出目录与命名规则如下: - 输出目录:`C:/Users/<用户名>/Documents/QtDPIDemoReports` - 文件名前缀:`dpi_report_yyyyMMdd_HHmmss` - 模式后缀: - `HighDPI ON` -> `_on` - `HighDPI OFF` -> `_off` - `Launcher` -> `_launcher` - 导出文件类型: - `*_screenshot.png` - `*_report.html` 对应实现位置: - `src/ReportGenerator.cpp:371` - `src/ReportGenerator.cpp:378` - `src/ReportGenerator.cpp:385` - `src/MainWindow.cpp:203` - `src/MainWindow.cpp:219` ## 当前已知验证结论 以下内容基于本次 Task 7 的实际验证结果: ### 已确认事实 - Release 构建可成功完成。 - **启动递归问题已定位并修复**:根因是 `main()` 入口改为基于 `argc/argv` 判定模式,避免 worker 误走 launcher 分支。 - 默认启动后,进程采样中观察到 **2 个新增进程**(验证递归修复有效)。 - `Qt5DPIDemo.exe --mode=on` 采样只新增 **1 个进程**(验证单模式启动正常)。 - `Qt5DPIDemo.exe --mode=on` 可进入 GUI。 - `Qt5DPIDemo.exe --mode=off` 可进入 GUI。 - 代码中已经实现按模式区分报告输出目录与文件名后缀。 ### 尚待进一步确认的问题 - **launcher 是否按预期快速退出**:当前进程采样结果存在歧义,需后续做更精确的 PID 追踪确认,不能据此直接下结论。 - **真实报告导出样本**:本次尝试了自动化触发“保存报告”,但未稳定取得真实落盘文件,因此当前只能确认代码中的输出目录与命名规则,尚未取得实际样本。 ## 构建 ### Windows (MSVC) ```bash mkdir build cd build cmake -G "Visual Studio 16 2019" -A x64 .. cmake --build . --config Release ctest -C Release --output-on-failure ``` ## 主要源码位置 - 启动与 launcher 分支:`src/main.cpp` - 模式解析与模式标签:`src/AppMode.cpp` - 双开参数与 detached 启动:`src/Launcher.cpp` - 主窗口与报告导出:`src/MainWindow.cpp` - 报告命名规则:`src/ReportGenerator.cpp` ## 许可证 本项目仅供技术学习和演示使用。