TeleBook 是一款跨平台图书管理与阅读应用的桌面版,使用 Qt 6 / QML 重新实现。支持本地书库管理、多种方式导入书籍、网页图片下载、阅读、导出等核心功能。
桌面版专注解决移动版难以实现的功能,尤其是网页图片下载——利用 Qt WebEngine 渲染网页并定时解析提取图片,这正是选择 Qt 重写桌面版的原因。
- 网格 / 列表两种视图,一键切换
- 搜索过滤、按添加时间 / 书名排序(升降序)
- 多选批量操作:批量导出、批量删除
- 每本书自动记录阅读位置,支持断点续读
支持 4 种导入方式(对话框内选择):
- 图片文件夹:选择包含图片的文件夹,自动按文件名自然排序
- 压缩包:ZIP / CBZ,递归收集图片(vendored miniz 静态库,三平台统一、零系统依赖)
- PDF 文件:使用 Qt Pdf 模块逐页渲染为图片(约 150 DPI)
- 导入时可预览缩略图、修改书名;书库重名自动追加序号(
名称 (2))
- 内置 WebEngineView 渲染网页,每 3 秒定时解析并提取网页图片(可手动「获取图片」兜底)
- 自动获取网页标题(
<h1>优先,其次<title>) - 侧边栏实时显示解析到的图片列表(缩略图 + URL)
- 「保存当前图片为书籍」:编辑标题、调整顺序、删除不需要的图片
- 下载管理页实时显示任务进度、状态、保存路径,支持单条/整组重试、删除
- 下载完成自动保存为书籍,加入书库
- 单本导出 / 批量导出(多选)
- 三种格式:文件夹、ZIP、PDF
- 批量导出重名自动加序号(
同名 (2).zip) - 后台异步处理 + 实时进度,不阻塞界面
- 新建 / 编辑 / 删除收藏夹(名称 + 描述)
- 书籍右键「加入收藏夹」,可勾选多个收藏夹
- 收藏夹内书籍列表,支持添加 / 移出,点击打开阅读器
- 独立窗口,← → / ↑ ↓ / 空格翻页,滚轮翻页
- Ctrl + 滚轮缩放(1x - 4x),双击还原,拖动平移
- 底部进度条 + 页码导航,自动保存阅读位置
- 深色阅读背景
- 深色 / 浅色主题跟随系统
- 轻量 Toast 提示、确认对话框
- 应用内日志窗口(
--logs参数或菜单「日志」)
- Qt 6.11(QML / Qt Quick Controls 2 / Material 风格)
- Qt WebEngine:网页渲染与图片解析
- Qt Pdf:PDF 转图片(导入)
- QPdfWriter:导出 PDF(QtGui 内置)
- miniz(
third_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 的编译器
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