diff --git a/src/app/main.cpp b/src/app/main.cpp index 555b750..3b26733 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -1251,6 +1251,14 @@ public: int main(int argc, char* argv[]) { +#ifdef Q_OS_WIN + // Qt6 Windows 的 DirectWrite 字体数据库在本机枚举字体回退(fallbacksForFamily → + // populateFamily)时崩溃(0xc0000005,见 logs/crash_*.dmp + geopro_*.log 栈):渲染后一次布局 + // 重算 QPushButton sizeHint → 对按钮文字整形 → 主字体(YaHei)缺某字形(如三角符 ◀▶)触发回退 → + // DirectWrite 在本机抛 C++ 异常并最终段错误(登录/面板只用中文+拉丁,YaHei 都有,故先前不崩)。 + // 改用 GDI 字体引擎绕开有问题的 DirectWrite 回退路径(稳定优先,渲染质量略变)。须在 QApplication 前设置。 + qputenv("QT_QPA_PLATFORM", "windows:fontengine=gdi"); +#endif // Qt WebEngine(地图页签的 QWebEngineView):必须在 QApplication 构造前初始化, // 且需启用跨上下文共享 OpenGL(QtWebEngine 与 QVTK 同进程共用 GL context,避免黑屏/崩溃)。 // AA_ShareOpenGLContexts 须在 QApplication 之前设置;QtWebEngineQuick::initialize() 同样须前置。