Skip to content

Repository files navigation

TeleBook 桌面版

TeleBook 是一款跨平台图书管理与阅读应用的桌面版,使用 Qt 6 / QML 重新实现。支持本地书库管理、多种方式导入书籍、网页图片下载、阅读、导出等核心功能。

桌面版专注解决移动版难以实现的功能,尤其是网页图片下载——利用 Qt WebEngine 渲染网页并定时解析提取图片,这正是选择 Qt 重写桌面版的原因。

功能特性

📚 书库管理

  • 网格 / 列表两种视图,一键切换
  • 搜索过滤、按添加时间 / 书名排序(升降序)
  • 多选批量操作:批量导出、批量删除
  • 每本书自动记录阅读位置,支持断点续读

📥 导入书籍

支持 4 种导入方式(对话框内选择):

  • 图片文件夹:选择包含图片的文件夹,自动按文件名自然排序
  • 压缩包:ZIP / CBZ,递归收集图片(vendored miniz 静态库,三平台统一、零系统依赖)
  • PDF 文件:使用 Qt Pdf 模块逐页渲染为图片(约 150 DPI)
  • 导入时可预览缩略图、修改书名;书库重名自动追加序号(名称 (2)

🌐 网页图片下载

  • 内置 WebEngineView 渲染网页,每 3 秒定时解析并提取网页图片(可手动「获取图片」兜底)
  • 自动获取网页标题(<h1> 优先,其次 <title>
  • 侧边栏实时显示解析到的图片列表(缩略图 + URL)
  • 「保存当前图片为书籍」:编辑标题、调整顺序、删除不需要的图片
  • 下载管理页实时显示任务进度、状态、保存路径,支持单条/整组重试、删除
  • 下载完成自动保存为书籍,加入书库

📤 导出书籍

  • 单本导出 / 批量导出(多选)
  • 三种格式:文件夹ZIPPDF
  • 批量导出重名自动加序号(同名 (2).zip
  • 后台异步处理 + 实时进度,不阻塞界面

🗂️ 收藏夹

  • 新建 / 编辑 / 删除收藏夹(名称 + 描述)
  • 书籍右键「加入收藏夹」,可勾选多个收藏夹
  • 收藏夹内书籍列表,支持添加 / 移出,点击打开阅读器

📖 阅读器

  • 独立窗口,← → / ↑ ↓ / 空格翻页,滚轮翻页
  • Ctrl + 滚轮缩放(1x - 4x),双击还原,拖动平移
  • 底部进度条 + 页码导航,自动保存阅读位置
  • 深色阅读背景

🎨 其他

  • 深色 / 浅色主题跟随系统
  • 轻量 Toast 提示、确认对话框
  • 应用内日志窗口(--logs 参数或菜单「日志」)

技术栈

  • Qt 6.11(QML / Qt Quick Controls 2 / Material 风格)
  • Qt WebEngine:网页渲染与图片解析
  • Qt Pdf:PDF 转图片(导入)
  • QPdfWriter:导出 PDF(QtGui 内置)
  • minizthird_party/miniz,vendored 静态库):跨平台 ZIP/CBZ 解压与导出,零系统依赖
  • SQLite(QtSql):本地书库存储
  • QtConcurrent:后台任务(导入 / 下载 / 导出)
  • QNetworkAccessManager:图片下载引擎

压缩包处理不依赖任何系统库或外部命令:三平台统一使用 vendored 的 miniz 静态编译进应用,分发时不存在"缺库"问题。

环境要求

  • Qt 6.10+,需包含模块:Quick, QuickControls2, QuickDialogs2, QuickLayouts, Sql, Concurrent, Network, Pdf, WebChannel, WebEngineQuick
  • macOS:Homebrew qt(含 qtwebengine/qtpdf)或 Qt 官方安装包(需额外安装 WebEngine 与 Pdf 模块)
  • Linux:Qt 官方安装包 + 编译工具(libarchive 等已改为 vendored miniz,不再需要)
  • CMake 3.16+,支持 C/C++17 的编译器

macOS 依赖安装

brew install qt qtwebengine qtpdf

项目 CMake 会自动优先使用 Homebrew Qt(/opt/homebrew)。

构建

cmake -S . -B build
cmake --build build

运行:

./build/appTelebookDesktop.app/Contents/MacOS/appTelebookDesktop

也可以用 Qt Creator 打开 CMakeLists.txt 构建运行(需在 Kits 中配置 Homebrew Qt)。

项目结构

TelebookDesktop/
├── CMakeLists.txt
├── main.cpp                      # 入口:数据库/主题/各服务初始化
├── src/backend/                  # C++ 后端
│   ├── DatabaseManager.*         # SQLite 数据库 + 书库目录
│   ├── BookManager.*             # 书籍增删改查、导入、进度
│   ├── BookListModel.*           # 书籍列表模型(排序/过滤)
│   ├── CollectionManager.*       # 收藏夹管理
│   ├── DownloadManager.*         # 网页图片下载引擎(组/条目模型)
│   ├── ExportService.*           # 导出(文件夹/ZIP/PDF,单本/批量)
│   ├── PdfImporter.*             # PDF 转图片
│   ├── LibraryStorage.*          # 图片收集、书库文件存储、封面生成
│   ├── ImageCache.*              # 远程图片缓存
│   ├── LogManager.*              # 应用内日志
│   ├── Theme.*                   # 主题(深色/浅色跟随系统)
│   └── archive/                  # 压缩包解压(统一 miniz 实现)
├── third_party/miniz/            # vendored 跨平台压缩库(MIT,静态编译)
└── qml/                          # QML 界面
    ├── Main.qml                  # 主窗口 + 左侧导航
    ├── components/               # 通用组件(AppButton/Toast/EmptyState…)
    ├── pages/                    # 书籍页 / 下载页 / 收藏夹页
    ├── dialogs/                  # 导入/导出/收藏/选择等对话框
    └── windows/                  # 阅读器 / 网页下载 / 收藏夹内容 / 日志窗口

数据存储

应用数据保存在系统应用数据目录:

内容 路径
数据库 ~/Library/Application Support/Telebook/TelebookDesktop/telebook.db
书库文件 .../library/<uuid>/00000001.jpg…(含 cover.jpg 封面缩略图)
下载暂存 .../downloads/<书名>_<id>/

数据库表:books(书籍)、collections(收藏夹)、collection_books(收藏关联)。

快捷键

快捷键 功能
Ctrl+I 导入书籍
Ctrl+Q 退出

测试

后端核心逻辑(导入 / 下载 / 收藏 / 导出 / PDF 渲染)均有独立端到端测试,使用本地 HTTP 服务器与真实文件验证。

后续规划

  • 下载任务持久化(重启后恢复)
  • 批量下载网页图片任务管理增强
  • 阅读器多方向阅读(右左 / 上下长条)
  • 书签与阅读历史
  • 深色模式细节打磨

许可证

MIT License

About

Telebook 的桌面版本

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages