对于上一个例子,我们的view路径已经定死了,不能够进行路径的跳转,如果细心的同学可能也会发现我们默认触发编辑的行为也是有限的,那么为了对这两个问题进行改进,我在demo1的基础上给出了demo2:
对比demo1,我把view item的双击文件夹的行为变更为跳转的行为,双击文件的行为变成使用默认应用打开的行为,为了实现这样的功能,我们首先需要连接view的双击信号,然后获取双击item的信息并且进行处理;另外,我把编辑文件名的操作放到了一个右键菜单中,这也是本来view默认不支持的操作形式。
从demo2中,我们已经能够窥见model/view的交互形式了,model/view机制实际上是以内部信号处理+外部(开发者)定制信号处理的方式进行设计的,通过这样的形式,我们不需要了解底层的细节,也能够基于它的框架进行开发,感觉一下子简单了不少。由于复杂的逻辑交互已经被内置的流程处理,剩下来的工作看起来就非常的高大上了,对于一般的开发者来说,熟练掌握这种demo2中的开发形式足矣。
值得一提的是在Qt5中,Qt的信号槽已经支持了c++的lambda表达式,这极大的简化了我们构建交互逻辑的难度,虽然可能会带来一些其它的问题,但这一重要的特性仍然值得推崇和使用。qt的信号槽和lambda不是本书的重点,如果有兴趣或者有疑问,请大家自信百度参考其它资料补充这一块的知识。