Qt/QML Windows应用在Grammarly运行时卡顿严重的解决方案咨询
解决方案
无需立即编译Qt,优先尝试以下方案
确保
QT_ACCESSIBILITY=0生效:
该环境变量必须在QGuiApplication/QApplication实例化前设置才会生效,可通过两种方式验证:- 启动应用前通过命令行注入:
set QT_ACCESSIBILITY=0 && Oxygen.exe - 在代码开头硬编码设置:
qputenv("QT_ACCESSIBILITY", "0"); QGuiApplication app(argc, argv);
- 启动应用前通过命令行注入:
禁用Qt辅助功能插件:
Qt的辅助功能依赖plugins/accessible目录下的插件(如qtaccessiblewidgets.dll、qtaccessiblequick.dll),可通过两种方式处理:- 临时重命名该目录,测试应用是否恢复流畅
- 在代码中提前禁用扩展:
QCoreApplication::setAttribute(Qt::AA_DisableAccessibleExtensions); QGuiApplication app(argc, argv);
打包应用时直接排除这些插件即可永久生效。
Windows系统级优化:
- 检查Grammarly设置,看是否支持将目标应用加入忽略列表(部分桌面版提供该功能)
- 通过Windows API减少辅助技术的查询触发:
#include <windows.h> int main(int argc, char *argv[]) { // 在Qt应用实例化前调用 SetProcessDefaultCaretBlinkTime(500); QGuiApplication app(argc, argv); // ... 剩余代码 }
仅当上述方案无效时,考虑编译Qt
如果所有轻量方案都无法解决问题,可以自行编译Qt 5.15.2,添加编译配置-no-accessibility,完全移除辅助功能模块。编译前需配置好Windows编译环境(如Visual Studio、Perl、Python等)。
内容的提问来源于stack exchange,提问作者Gunther
相关产品推荐
相关产品推荐

