不要低估你的能力,不要高估你的毅力
前言
最近因为需要,着手写了个打包工具,功能挺简单的,目前就是基本的文件和文件夹复制。由于要求使用QT进行开发,个人又没有学过,因此完成下面的内容确实花了不少时间。由于网上的资源较少,而且达不到想要的效果,因此自己动手实现了许多功能,代码可能较为冗余(哭),好在功能实现了,多少有了点欣慰之感。
效果展示
首先,先给出几张效果展示图,目前没有任何美化,只是完成了功能,还有很大的改善空间。
1.运行截图为:
2.从上到下,分为三个板块,功能相同,具体演示为:
就是先打开一个文件夹,然后选择复制文件夹目录,选择复制即可。至于remove,可用于复制出错后删除相应文件,而generate按钮用于自动检索打开文件夹是否有批处理文件,有的话就执行。
这个小工具的难点在于文件夹的树形展示和对相应选中文件的操作。在开始制作时,首先是想在网上找找有没有相应的例子,但遗憾的是找到的都是相应用法(只是将项目通过QT展现出来),没有相关操作。QT好像也没有相应的函数,所以根据QT的QTreeWidget
中自带的特性,东补西凑地完成了。
具体实现
这里主要采用了QTreeWidget,前期网上很多都是使用QtreeView,但QTreeView好像主要用于展示,对展示后的相关操作比较麻烦,而且效果不太好,于是转向了QTreeWidget。二者主要区别:
QTreeView一般和相应的QXXModel合用,形成Model/View结构.
QTreeWidget继承自QTreeView ,是封闭了默认Model的QTreeView,其中的元素是QTreeWidgetItem类型,要插入只需将新建QTreeWidgetItem的父类设为指定的QTreeWidget就行(在QTreeWidgetItem的构造函数中指定),要删除直接delete掉QTreeWidgetItem就行
两者的具体区别在此不多说,根据实际需要选择吧,这个小工具QTreeWidget比较适合,下面是实现源码。
实现源码
代码质量一般,其实相关功能的实现有多中方法,这里用的都是比较简单的,这里仅供参考。
在QT中新建一个widgets项目,命名为Robust,更改相应内容如下:
robust.h
1 |
|
externarg.h
1 |
|
subqtreewidgetitem.h
1 |
|
robust.cpp
这里只留到第一部分的代码,第二三部分类似。
1 |
|
externarg.cpp
1 |
|
subqtreewidgetitem.cpp
1 |
|
main.cpp
1 |
|
结语
自己真的太懒了,已经好久没有认真写过博客了,这篇写得也很马虎,希望能尽早改正吧。