QTreeWidget是实现树形结构的类,在很多软件中都可以看到类似树形结构的界面。
我做的一个示例如下图,用来处理图像,最顶层节点是图像的路径名,子节点是图像的各个波段,双击各个波段会显示图像各波段的灰度图像,同时还有删除指定节点(父节点和子节点同时删除)的功能。效果如下所示
要完成这样的功能需要注意一下几点:
①.在内存中保存各个节点,当然要在堆上分配内存,删除节点时,除了去除QtreeWidget控件上的节点外,还要讲存储在内存中的节点也要删除,否则会出现内存泄露的问题。
②.节点双击的事件响应,准确定位到是哪个图像的哪个波段。
下面详细叙述。
1.变量
需要有个变量记录图像的路径名,这里定义一个容器,数据类型为QString
QVector imgFile;
2.定义信号和槽
需要三个槽,
打开菜单:每使用打开菜单打开一幅图像就将该图像的路径名和波段数设计成父节点和子节点添加到QTreeWidget控件中。
删除节点的按钮:删除指定节点(该节点处于高亮状态,即选中状态)
双击某波段:显示该波段的灰度图像。
这里着重讲解与QTreeWidget相关的,因此有关显示图像的内容概不论述。
信号与槽链接如下: