QTreeWidget
QTreeWidget是一个在qt中非常常用且重要的控件,可以用它进行数据的层级关系的可视化、数据管理、数据操作等工作。用好它可以让自己的软件看起来更舒服也简洁直观。而不受困于一大堆的数据和按键中。用好这个控件的关键是在于如何将界面和程序内部的数据进行同步起来。做到对界面进行操作的同时也能对相应的数据进行操作。
用好QTreeWidget需要了解其中的几个技巧,否则可能它不但不能帮你简化你的程序,反而加重了你的编程负担。下面就根据个人实际项目中的使用经验,分享下我的一些使用心得和技巧。这些心得和技巧完全是个人实践摸索所得,官方文档中并没有提供相应的说明,如果不妥,希望不吝赐教,同时,如果您能提供更好的方式,也希望能不吝分享。
基本使用
QTreeWidget继承自QTreeView类,QTreeView中使用了MVC框架实现对界面、操作和数据的协作,对于大量数据的可视化,该框架可以有效提速和较小内存消耗,当然该机制学习门槛也比较高些。QTreeWidget则较为直接易懂,是为了适用于数据量较少的应用场景而重新实现的类,其内部机制还是MVC框架,但使用者不需要理解MVC框架,就可以轻松使用。
对于树控件较为常用的操作无非:
- 右键菜单
- 添加项目
- 删除某个项目
- 删除某个项目的所有子项目
- 项目拖拽
- 项目中嵌入控件
- 项目所对应的程序数据的操作
- 数据清理
下面用一个笔记本的示例程序说明上述操作的实现:笔记本具备:新建笔记本,新建笔记,删除笔记,保存笔记,删除笔记本中的所有笔记等操作。
定义笔记的数据结构如下:
struct Note{
Note(QString tile){
id = QUuid::createUuid().toString();
this->tile = tile;
QDateTime time =QDateTime::currentDateTime();
recordTime =time.toString("yyyy.MM.dd hh:mm:ss.zzz ddd");
}
~Note(){
}
QString id; //笔记的唯一id
QString tile; //笔记的内容
QString recordTime; //记录时间
QString content; //笔记的