简介
前面几篇的讲解,我们已经完成QT电子相册的开发,这里做一个总结,说明各个类的功能,以及关联和使用情况。
类功能介绍
QMainWindow
该类主要用来管理主窗口,包括菜单的显示与交互等。
基本功能包括:
1 主界面显示为左侧的文件列表框和右侧的图片展示区,其内部包含目录树类和图片展示类的指针。
2 显示菜单项并将菜单项与点击逻辑关联。
3 支持打开和创建项目操作。
4 通过map管理所有创建或打开的项目,对于创建项目时,采取的是建立指定文件夹,对于打开项目时,直接打开指定的文件夹。
向导类Wizard
当我们创建项目时,会按步骤提示用户操作,需要用到向导类。该类继承于QWizard
,重写了done函数,保证用户操作完成时发送SigProSettings
信号给目录树类ProTree
。
向导类内部包含了两个向导页,一个是项目属性设置页面ProSetPage
,一个是确认页面ConfirmPage
。ProSetPage
页面可以输入项目名称和路径,也支持打开文件夹自动录入路径功能。同时支持录入过程中检测输入是否合法,包括路径是否已经存在,项目名称是否已经存在等。这部分功能通过重写isComplete
函数实现逻辑判断。ConfirmPage
用来确认用户操作,用户可以选择取消,如果取消则中止创建项目流程。
目录树ProTree类
该类主要控制主界面左侧显示目录树,包括基于目录树的一些操作,功能包括如下
1 接收向导类的SigProSettings
信号,将项目添加至左侧目录区。
2 支持导入文件操作,右键项目名称在弹出菜单选择导入文件会弹出导入文件夹对话框,选择要导入的文件即可。
3 设置活动项目,设置为活动项目的条目会被指定为默认选中的项目,项目处于高亮并字体变粗。
4 轮播图播放,当点击轮播图播放时会依次播放目录树下的每张图片。
5 ProTree
类内部管理了ui文件,ui文件中QTreeWidget
被升级为我们自定义的ProTreeWidget
类型。进而支持上述菜单操作。
成员函数和变量介绍:
1 Ui::ProTree *ui
表示ProTree
的ui类。
2 AddProToTree
该函数和主界面发送的SigProSettings
信号连接,在左侧创建目录文件夹。
3 GetTreeWidget
该函数返回ui内管理的ProTreeWidget
对象的指针。
目录树ui类ProTreeWidget
该类继承于QTreeWidget
类,用于实现目录列表,该类放在ProTree
的ui文件里,将QTreeWidget升级为该类型,同时也可以响应主窗口发送过来的打开项目和创建项目信号。其功能包括如下:
1 包括一个集合_set_path
,防止重复导入相同项目,规则为根据路径和项目名组合生成的字符串是否已经在集合中,如果在则不插入目录树。
2 支持右键点击item,生成弹出菜单,菜单包括导入文件,关闭项目,幻灯片放映以及设为启动项目等菜单项。
3 根据主界面发送的导入或创建项目信号,执行导入逻辑和创建逻辑。因为导入和创建逻辑会占用cpu,为提升性能,启动导入线程OpenTreeThread
和创建线程ProTreeThread
。
4 导入和创建项目时更新进度条对话框
5 支持中途取消导入和创建项目。
6 支持双击条目显示图片,支持点击右侧显示区的切换按钮进行切换图片。
7 支持处理主界面发送的设置音乐请求
类成员说明如下:
1 _set_path
缓存目录树中的项目名。
2 _action_import
导入文件动作。
3 _action_setstart
设置活动项动作。
4 _action_closepro
关闭项目动作。
5 SlotItemPressed
右键点击的槽函数弹出菜单。
6 _right_btn_item
缓存右键点击的item项。
7 _active_item
缓存设置的启动项。
8 _dialog_progress
导入文件时现实的进度对话框。
ProTreeThread类
该类继承自QThread,因为创建项目后,导入图片文件时耗时较长,所以启动这个线程。该线程响应外界的中止消息,并根据copy文件的进度向进度对话框通知进度。
类成员说明如下
1 _src_path文件源路径。
2 _dist_path文件目的路径。
3 _file_count表示已经复制的文件数
4 拷贝生成的目录树的当前节点的父节点。
5 _root表示拷贝生成的目录树的根节点。
6 _bstop表示是否停止。
7 SigUpdateProgress表示更新进度的信号
8 SigFinishProgress表示完成的信号。
OpenTreeThread类
OpenTreeThread 和ProTreeThread类似,所以不再赘述。
PicAnimationWid类
动画类,当点击左侧目录树选择播放幻灯片时,PicAnimationWid类负责播放动画。
主要类成员和功能如下:
1 SetPixmap函数设置图片,设置当前播放和即将播放的图片。
2 UpSelectPixmap 当点击左侧目录树item或者点击下方预览图时会触发该函数,用来更新播放的图片,进而切换播放的图片。
3 paintEvent重写了喷绘函数,实现双缓冲绘图,播放第一张图片alpha为255,第二章图片alpha为0,然后慢慢将第一张alpha变为0,第二张变为255,进而实现图片的渐隐渐显效果。
4 SlotStartOrStop 启动或停止动画的槽函数。
5 SlideNext,SlidePre向前和向后切换动画的槽函数。
6 TimeOut定时切换图片的槽函数。
PicShow类
PicShow类主要是管理右侧显示区域的。包括点击按钮的渐变变化,以及切换图片的显示功能。
1 ShowPreNextBtns用来实现按钮渐渐显示效果。
2 SlotUpdatePic更新显示的图片。
3 SlotSelectItem更新选中的item。