feat: v0.5.0 —— 导出 PDF(带预览窗口)

导出
- 文件 → 导出 PDF…(Ctrl+E)先弹出预览窗口,确认后点「保存 PDF…」选路径
- A4 纸、16mm 页边距;预览和导出共用同一个 QTextDocument,页宽一致
- 只用 Qt 自带的 QPrinter / QTextDocument,没有引入外部 PDF 库

排版
- 新增 MarkdownRenderer:把 Markdown 解析成排版好的富文本文档
- 支持标题、列表 / 任务列表、引用、围栏代码块、行内代码、
  粗体 / 斜体 / 删除线、链接;图片输出 alt 文字,表格暂按原文
- 代码块带底色、引用带竖线、分隔线画成横线

其它
- 用用户更新后的 logo.png 重新生成了 ico / icns / png
- docs/screenshot-export.png 与 README 同步
This commit is contained in:
2026-10-22 17:58:01 +08:00
parent c83b4a239c
commit 8cb0702614
13 changed files with 588 additions and 4 deletions
+12
View File
@@ -1,5 +1,6 @@
#include "MainWindow.h"
#include "ExportDialog.h"
#include "MarkdownEditor.h"
#include "ThemeManager.h"
@@ -133,6 +134,10 @@ void MainWindow::createActions()
m_saveAsAction->setShortcut(QKeySequence(QStringLiteral("Ctrl+Shift+S")));
connect(m_saveAsAction, &QAction::triggered, this, [this] { saveFileAs(); });
m_exportPdfAction = new QAction(tr("导出 PDF…"), this);
m_exportPdfAction->setShortcut(QKeySequence(QStringLiteral("Ctrl+E")));
connect(m_exportPdfAction, &QAction::triggered, this, &MainWindow::exportPdf);
m_quitAction = new QAction(tr("退出"), this);
m_quitAction->setShortcut(QKeySequence::Quit);
connect(m_quitAction, &QAction::triggered, this, &QWidget::close);
@@ -269,6 +274,7 @@ void MainWindow::createMenus()
fileMenu->addSeparator();
fileMenu->addAction(m_saveAction);
fileMenu->addAction(m_saveAsAction);
fileMenu->addAction(m_exportPdfAction);
fileMenu->addSeparator();
fileMenu->addAction(m_quitAction);
@@ -536,6 +542,12 @@ bool MainWindow::saveFileAs()
return writeToFile(path);
}
void MainWindow::exportPdf()
{
ExportDialog dialog(m_editor->toPlainText(), displayName(), startDirectory(), this);
dialog.exec();
}
bool MainWindow::writeToFile(const QString &path)
{
QString text = m_editor->toPlainText();