From caa65b9c97fa0595fe53077a5b24b3f48cc18456 Mon Sep 17 00:00:00 2001 From: liyepan Date: Thu, 22 Oct 2026 17:31:57 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=94=A8=20logo.png=20=E4=BD=9C?= =?UTF-8?q?=E4=B8=BA=E7=A8=8B=E5=BA=8F=E5=9B=BE=E6=A0=87=E5=B9=B6=E8=A1=A5?= =?UTF-8?q?=E9=BD=90=E6=89=93=E5=8C=85=E8=B5=84=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 从 logo.png 生成 packaging/ 下的 ico / icns / 256px png - Qt 运行时窗口图标走 resources.qrc(不安装也有图标), 并以 setDesktopFileName 声明桌面文件名 - Linux 增加 voiletmark.desktop 与 make install 规则 (可执行文件 + desktop 条目 + hicolor 图标) - Windows 用 RC_ICONS 嵌入 exe 图标,macOS 用 ICON 设置 app bundle 图标 - 关于对话框显示 logo - 版本 0.3.1 --- README.md | 28 +++++++++++++++++++++++++++- VoiletMark.pro | 16 +++++++++++++++- packaging/voiletmark.desktop | 17 +++++++++++++++++ packaging/voiletmark.icns | Bin 0 -> 7874 bytes packaging/voiletmark.ico | Bin 0 -> 270622 bytes packaging/voiletmark.png | Bin 0 -> 5728 bytes src/MainWindow.cpp | 19 +++++++++++++------ src/main.cpp | 1 + 8 files changed, 73 insertions(+), 8 deletions(-) create mode 100644 packaging/voiletmark.desktop create mode 100644 packaging/voiletmark.icns create mode 100644 packaging/voiletmark.ico create mode 100644 packaging/voiletmark.png diff --git a/README.md b/README.md index d5573dc..feaf49c 100644 --- a/README.md +++ b/README.md @@ -103,6 +103,28 @@ make -j"$(nproc)" 脚本会依次查找 `command -v qmake`、`$QT_PREFIX/bin/qmake`、 `$HOME/Qt5/5.15.2/gcc_64/bin/qmake`;也可以用 `QMAKE=/path/to/qmake` 直接指定。 +## 安装(Linux) + +```bash +make -C build install # 默认装到 /usr/local +make -C build install INSTALL_ROOT=/tmp/pkg # 打包用,装到 /tmp/pkg/usr/local +``` + +会一起装上可执行文件、`voiletmark.desktop` 和 256×256 图标, +装完就能在应用菜单里搜到 VoiletMark。 + +## 图标 + +`logo.png` 是源文件,`packaging/` 里是从它生成的各平台图标: + +| 文件 | 平台 | +| --- | --- | +| `voiletmark.ico` | Windows 可执行文件图标(`RC_ICONS`) | +| `voiletmark.icns` | macOS 应用包图标(`ICON`) | +| `voiletmark.png` | Linux 桌面图标(hicolor 256×256) | + +运行时的窗口图标直接嵌在资源里(`resources.qrc`),所以不安装也有图标。 + ## 命令行 ```bash @@ -137,7 +159,11 @@ src/ ├── ThemeManager.{h,cpp} 四种主题模式 + 系统检测 + 调色板 / QSS 生成 ├── MainWindow.{h,cpp} 菜单、文件读写、文件夹侧栏、状态栏、设置 ├── MarkdownEditor.{h,cpp} 编辑器控件:行号、缩进、标题 / 代码块命令、源码模式 -└── MarkdownHighlighter.{h,cpp} Markdown 语法着色(含围栏代码块状态机) +└── MarkdownHighlighter.{h,cpp} Markdown 着色与就地渲染(隐藏标记、标题缩放) + +logo.png 图标源文件 +resources.qrc 窗口图标资源 +packaging/ 各平台图标(ico / icns / png)与 .desktop ``` ## 下一版计划 diff --git a/VoiletMark.pro b/VoiletMark.pro index efb8c0d..b4dd860 100644 --- a/VoiletMark.pro +++ b/VoiletMark.pro @@ -1,6 +1,6 @@ TEMPLATE = app TARGET = VoiletMark -VERSION = 0.3.0 +VERSION = 0.3.1 QT += core gui widgets @@ -13,6 +13,10 @@ INCLUDEPATH += $$PWD/src RESOURCES += resources.qrc +# 各平台的可执行文件图标 +win32: RC_ICONS = packaging/voiletmark.ico +macx: ICON = packaging/voiletmark.icns + SOURCES += \ src/main.cpp \ src/MainWindow.cpp \ @@ -25,3 +29,13 @@ HEADERS += \ src/MarkdownEditor.h \ src/MarkdownHighlighter.h \ src/ThemeManager.h + +# Linux 桌面集成:make install 之后能在应用菜单里找到 +isEmpty(PREFIX): PREFIX = /usr/local + +target.path = $$PREFIX/bin +desktop.files = packaging/voiletmark.desktop +desktop.path = $$PREFIX/share/applications +icon.files = packaging/voiletmark.png +icon.path = $$PREFIX/share/icons/hicolor/256x256/apps +INSTALLS += target desktop icon diff --git a/packaging/voiletmark.desktop b/packaging/voiletmark.desktop new file mode 100644 index 0000000..0c788bb --- /dev/null +++ b/packaging/voiletmark.desktop @@ -0,0 +1,17 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Name=VoiletMark +GenericName=Markdown Editor +GenericName[zh_CN]=Markdown 编辑器 +Comment=Lightweight cross-platform Markdown editor +Comment[zh_CN]=轻量的跨平台 Markdown 编辑器 +Exec=VoiletMark %F +Icon=voiletmark +Terminal=false +Categories=Utility;TextEditor;Office; +Keywords=markdown;editor;notes; +Keywords[zh_CN]=markdown;编辑器;笔记; +MimeType=text/markdown; +StartupNotify=true +StartupWMClass=VoiletMark diff --git a/packaging/voiletmark.icns b/packaging/voiletmark.icns new file mode 100644 index 0000000000000000000000000000000000000000..9ee87c3c45c30efac8fee3bf1ad01b30f18933a8 GIT binary patch literal 7874 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 I|2b#=FS?_3w*UYD literal 0 HcmV?d00001 diff --git a/packaging/voiletmark.ico b/packaging/voiletmark.ico new file mode 100644 index 0000000000000000000000000000000000000000..b5eff535f00326abf65d24f79f94d1a97abb169a GIT binary patch literal 270622 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 SArJx~5CS0(0wJ(v68L|L*sF~I literal 0 HcmV?d00001 diff --git a/packaging/voiletmark.png b/packaging/voiletmark.png new file mode 100644 index 0000000000000000000000000000000000000000..099c01f9cde06e433f280ef3cb7fbfebea30365e GIT binary patch literal 5728 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 literal 0 HcmV?d00001 diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index ff0b30b..39eadcc 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -653,12 +654,18 @@ void MainWindow::applyThemeMode(int mode) void MainWindow::showAbout() { - QMessageBox::about( - this, tr("关于 VoiletMark"), - tr("

VoiletMark %1

" - "

一个轻量的跨平台 Markdown 编辑器。

" - "

基于 Qt %2 与 C++17 构建,界面会跟随系统自动切换浅色 / 深色主题。

") - .arg(QCoreApplication::applicationVersion(), QString::fromLatin1(qVersion()))); + QMessageBox box(this); + box.setWindowTitle(tr("关于 VoiletMark")); + box.setIconPixmap(QPixmap(QStringLiteral(":/logo.png")) + .scaled(72, 72, Qt::KeepAspectRatio, Qt::SmoothTransformation)); + box.setTextFormat(Qt::RichText); + box.setText(tr("

VoiletMark %1

" + "

一个轻量的跨平台 Markdown 编辑器。

" + "

基于 Qt %2 与 C++17 构建。

") + .arg(QCoreApplication::applicationVersion(), + QString::fromLatin1(qVersion()))); + box.setStandardButtons(QMessageBox::Ok); + box.exec(); } void MainWindow::addRecentFile(const QString &path) diff --git a/src/main.cpp b/src/main.cpp index 3f2fa73..6858089 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -17,6 +17,7 @@ int main(int argc, char *argv[]) QApplication app(argc, argv); QApplication::setStyle(QStyleFactory::create(QStringLiteral("Fusion"))); QApplication::setWindowIcon(QIcon(QStringLiteral(":/logo.png"))); + QGuiApplication::setDesktopFileName(QStringLiteral("voiletmark")); QCoreApplication::setOrganizationName(QStringLiteral("VoiletMark")); QCoreApplication::setApplicationName(QStringLiteral("VoiletMark"));