feat: 用 logo.png 作为程序图标并补齐打包资源
- 从 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
This commit is contained in:
@@ -103,6 +103,28 @@ make -j"$(nproc)"
|
|||||||
脚本会依次查找 `command -v qmake`、`$QT_PREFIX/bin/qmake`、
|
脚本会依次查找 `command -v qmake`、`$QT_PREFIX/bin/qmake`、
|
||||||
`$HOME/Qt5/5.15.2/gcc_64/bin/qmake`;也可以用 `QMAKE=/path/to/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
|
```bash
|
||||||
@@ -137,7 +159,11 @@ src/
|
|||||||
├── ThemeManager.{h,cpp} 四种主题模式 + 系统检测 + 调色板 / QSS 生成
|
├── ThemeManager.{h,cpp} 四种主题模式 + 系统检测 + 调色板 / QSS 生成
|
||||||
├── MainWindow.{h,cpp} 菜单、文件读写、文件夹侧栏、状态栏、设置
|
├── MainWindow.{h,cpp} 菜单、文件读写、文件夹侧栏、状态栏、设置
|
||||||
├── MarkdownEditor.{h,cpp} 编辑器控件:行号、缩进、标题 / 代码块命令、源码模式
|
├── MarkdownEditor.{h,cpp} 编辑器控件:行号、缩进、标题 / 代码块命令、源码模式
|
||||||
└── MarkdownHighlighter.{h,cpp} Markdown 语法着色(含围栏代码块状态机)
|
└── MarkdownHighlighter.{h,cpp} Markdown 着色与就地渲染(隐藏标记、标题缩放)
|
||||||
|
|
||||||
|
logo.png 图标源文件
|
||||||
|
resources.qrc 窗口图标资源
|
||||||
|
packaging/ 各平台图标(ico / icns / png)与 .desktop
|
||||||
```
|
```
|
||||||
|
|
||||||
## 下一版计划
|
## 下一版计划
|
||||||
|
|||||||
+15
-1
@@ -1,6 +1,6 @@
|
|||||||
TEMPLATE = app
|
TEMPLATE = app
|
||||||
TARGET = VoiletMark
|
TARGET = VoiletMark
|
||||||
VERSION = 0.3.0
|
VERSION = 0.3.1
|
||||||
|
|
||||||
QT += core gui widgets
|
QT += core gui widgets
|
||||||
|
|
||||||
@@ -13,6 +13,10 @@ INCLUDEPATH += $$PWD/src
|
|||||||
|
|
||||||
RESOURCES += resources.qrc
|
RESOURCES += resources.qrc
|
||||||
|
|
||||||
|
# 各平台的可执行文件图标
|
||||||
|
win32: RC_ICONS = packaging/voiletmark.ico
|
||||||
|
macx: ICON = packaging/voiletmark.icns
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
src/main.cpp \
|
src/main.cpp \
|
||||||
src/MainWindow.cpp \
|
src/MainWindow.cpp \
|
||||||
@@ -25,3 +29,13 @@ HEADERS += \
|
|||||||
src/MarkdownEditor.h \
|
src/MarkdownEditor.h \
|
||||||
src/MarkdownHighlighter.h \
|
src/MarkdownHighlighter.h \
|
||||||
src/ThemeManager.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
|
||||||
|
|||||||
@@ -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
|
||||||
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 264 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 5.6 KiB |
+13
-6
@@ -20,6 +20,7 @@
|
|||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
#include <QMenuBar>
|
#include <QMenuBar>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
|
#include <QPixmap>
|
||||||
#include <QSaveFile>
|
#include <QSaveFile>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
#include <QSignalBlocker>
|
#include <QSignalBlocker>
|
||||||
@@ -653,12 +654,18 @@ void MainWindow::applyThemeMode(int mode)
|
|||||||
|
|
||||||
void MainWindow::showAbout()
|
void MainWindow::showAbout()
|
||||||
{
|
{
|
||||||
QMessageBox::about(
|
QMessageBox box(this);
|
||||||
this, tr("关于 VoiletMark"),
|
box.setWindowTitle(tr("关于 VoiletMark"));
|
||||||
tr("<h3>VoiletMark %1</h3>"
|
box.setIconPixmap(QPixmap(QStringLiteral(":/logo.png"))
|
||||||
"<p>一个轻量的跨平台 Markdown 编辑器。</p>"
|
.scaled(72, 72, Qt::KeepAspectRatio, Qt::SmoothTransformation));
|
||||||
"<p>基于 Qt %2 与 C++17 构建,界面会跟随系统自动切换浅色 / 深色主题。</p>")
|
box.setTextFormat(Qt::RichText);
|
||||||
.arg(QCoreApplication::applicationVersion(), QString::fromLatin1(qVersion())));
|
box.setText(tr("<h3>VoiletMark %1</h3>"
|
||||||
|
"<p>一个轻量的跨平台 Markdown 编辑器。</p>"
|
||||||
|
"<p>基于 Qt %2 与 C++17 构建。</p>")
|
||||||
|
.arg(QCoreApplication::applicationVersion(),
|
||||||
|
QString::fromLatin1(qVersion())));
|
||||||
|
box.setStandardButtons(QMessageBox::Ok);
|
||||||
|
box.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::addRecentFile(const QString &path)
|
void MainWindow::addRecentFile(const QString &path)
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ int main(int argc, char *argv[])
|
|||||||
QApplication app(argc, argv);
|
QApplication app(argc, argv);
|
||||||
QApplication::setStyle(QStyleFactory::create(QStringLiteral("Fusion")));
|
QApplication::setStyle(QStyleFactory::create(QStringLiteral("Fusion")));
|
||||||
QApplication::setWindowIcon(QIcon(QStringLiteral(":/logo.png")));
|
QApplication::setWindowIcon(QIcon(QStringLiteral(":/logo.png")));
|
||||||
|
QGuiApplication::setDesktopFileName(QStringLiteral("voiletmark"));
|
||||||
|
|
||||||
QCoreApplication::setOrganizationName(QStringLiteral("VoiletMark"));
|
QCoreApplication::setOrganizationName(QStringLiteral("VoiletMark"));
|
||||||
QCoreApplication::setApplicationName(QStringLiteral("VoiletMark"));
|
QCoreApplication::setApplicationName(QStringLiteral("VoiletMark"));
|
||||||
|
|||||||
Reference in New Issue
Block a user