From 5d1cf078829a43ee9c57b50fe89b11bab2624543 Mon Sep 17 00:00:00 2001 From: gaozheng Date: Tue, 16 Jun 2026 18:59:44 +0800 Subject: [PATCH] =?UTF-8?q?fix(vtk):=20=E6=8A=BD=E5=B1=89=E6=8A=98?= =?UTF-8?q?=E5=8F=A0=E6=8C=89=E9=92=AE=20=E2=97=80=E2=96=B6=20=E6=96=87?= =?UTF-8?q?=E5=AD=97=E6=94=B9=20SVG=20chevron=20=E5=9B=BE=E6=A0=87(?= =?UTF-8?q?=E6=A0=B9=E5=9B=A0:YaHei=E7=BC=BA=E4=B8=89=E8=A7=92=E7=AC=A6?= =?UTF-8?q?=E2=86=92DirectWrite=E5=AD=97=E4=BD=93=E5=9B=9E=E9=80=80?= =?UTF-8?q?=E5=B4=A9);=E5=9B=9E=E9=80=80GDI=E4=B8=B4=E6=97=B6=E6=96=B9?= =?UTF-8?q?=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/Glyphs.cpp | 4 ++++ src/app/Glyphs.hpp | 2 ++ src/app/main.cpp | 8 -------- src/app/panels/columns/ColumnDrawer.cpp | 12 +++++++++--- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/app/Glyphs.cpp b/src/app/Glyphs.cpp index 14bf470..869db48 100644 --- a/src/app/Glyphs.cpp +++ b/src/app/Glyphs.cpp @@ -69,6 +69,10 @@ QString svgPathFor(Glyph t) return QStringLiteral( ""); + case Glyph::ChevronLeft: + return QStringLiteral(""); + case Glyph::ChevronRight: + return QStringLiteral(""); case Glyph::Workspace: return QStringLiteral( "" diff --git a/src/app/Glyphs.hpp b/src/app/Glyphs.hpp index 2425e3b..8a4b80a 100644 --- a/src/app/Glyphs.hpp +++ b/src/app/Glyphs.hpp @@ -27,6 +27,8 @@ enum class Glyph { Download, // 导出/下载 Collapse, // 折叠(双箭头) Fullscreen, // 全屏 / 最大化 + ChevronLeft, // 折叠抽屉(向左) + ChevronRight, // 展开抽屉(向右) // 顶部应用栏图标 Workspace, // 工作空间(2x2 宫格) Folder, // 项目(文件夹) diff --git a/src/app/main.cpp b/src/app/main.cpp index 3b26733..555b750 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -1251,14 +1251,6 @@ 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() 同样须前置。 diff --git a/src/app/panels/columns/ColumnDrawer.cpp b/src/app/panels/columns/ColumnDrawer.cpp index 4d853cb..6571228 100644 --- a/src/app/panels/columns/ColumnDrawer.cpp +++ b/src/app/panels/columns/ColumnDrawer.cpp @@ -2,6 +2,7 @@ #include "panels/columns/Column3DDataset.hpp" #include "panels/columns/Column2DDataset.hpp" #include "panels/columns/Column3DAnalysis.hpp" +#include "Glyphs.hpp" #include "Theme.hpp" #include #include @@ -24,8 +25,12 @@ ColumnDrawer::ColumnDrawer(QWidget* parent) tabs->addTab(col2D_, QStringLiteral("二维数据集")); tabs->addTab(colAnalysis_, QStringLiteral("三维分析")); - // 折叠按钮:固定宽 18px,垂直拉伸 - toggleBtn_ = new QPushButton(QStringLiteral("◀"), this); + // 折叠按钮:固定宽 18px,垂直拉伸。 + // 用 SVG 图标(makeGlyph)而非 ◀/▶ 文字——三角符(U+25C0/25B6)不在 YaHei,作按钮文字会触发 + // Qt 字体回退,本机 DirectWrite 在回退枚举时崩(0xc0000005)。SVG 图标走 QIcon 不做字体整形,规避之。 + toggleBtn_ = new QPushButton(this); + toggleBtn_->setIcon(geopro::app::makeGlyph(Glyph::ChevronLeft, + geopro::app::tokenColor("text/secondary"), 14)); toggleBtn_->setFixedWidth(18); toggleBtn_->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); toggleBtn_->setCursor(Qt::PointingHandCursor); @@ -51,7 +56,8 @@ void ColumnDrawer::toggleCollapsed() { collapsed_ = !collapsed_; body_->setVisible(!collapsed_); - toggleBtn_->setText(collapsed_ ? QStringLiteral("▶") : QStringLiteral("◀")); + toggleBtn_->setIcon(geopro::app::makeGlyph(collapsed_ ? Glyph::ChevronRight : Glyph::ChevronLeft, + geopro::app::tokenColor("text/secondary"), 14)); // 折叠后只保留按钮宽度;展开恢复上限 setMaximumWidth(collapsed_ ? 18 : 318); }