假如现在有个QTreeWidget控件,结构如下:
root
child1
child2
child3
我想要的效果是:点选child1或child2或child3的时候,相应的项child1、child2、child3被选中,点选root3的时候,如果之前选中的是child3,那么当前选中项还是child3,选中的项不发生变化。
我想的实现是,响应currentItemChanged ( QTreeWidgetItem * current, QTreeWidgetItem * previous )信号
如果current是root,那么setCurrentItem(previous )
可是实现出来的效果是:
点选root3的时候,如果之前选中的是child2,那么root、child1、child2都被选中了
点选root3的时候,如果之前选中的是child3,那么root、child1、child2、child3都被选中了
有没有哪位大神解释为什么会这样?以及怎么才能实现我想要的效果?
------解决方案--------------------
QTreeWidget没有处理子节点选中状态的功能吧
你根据你选中的是root还是child自己处理状态
------解决方案--------------------
selectionMode(QAbstractItemView::SingleSelection)
判断是root还是child处理状态
------解决方案--------------------
判断是不是root节点用他的parent函数看看有没有父节点判断