上次写博文留下了两个问题:解决了一个半。(1)解决了拖拽控件的问题;(2)解决了任意位置的TreeView位置的增删改查的问题;也也就意味着,对树形菜单可以按自己要求进行操作;(3)顺带解决了菜单栏的运用(右键菜单没有搞定,还需要努力)
留下半个问题:也即是终级操作,通过递归数据处理,对树形菜单与数据库内的数据进行动态设计编辑。我有点想放弃这个功能了,因为对数据框架问题,远远比单纯操作表格来得困难。但有可能以后还是会碰到这个问题。我看到C++与Java的处理办法是通过对数据时行“树形化”与“扁平化”处理,两个自定义函数就搞定了,看了半天没有理解。慢慢解决吧,现在可以实现98%的功能了,也不急于一时完美。
1、解决拖拽问题:tree.setDragEnabled(bool)/tree.setDragDropMode(bool)/tree.setDragDropOverwriteMode(bool)
2、解决任意位置TreeView位置的问题:
model.itemFromIndex(tree.currentIndex())再通过这个位置寻自己所处的row以及parent()进行操作
基本操作:insertRow(0,QStandardItem(your_item))/appendRow(QStandardItem)/removeRow(你要删除的位置)
兄弟级数据:currentIndex().sibling(int row,int column)
要注意:itemFromIndex()取得位置,要删除自身的话:找到自己所处的parent()位置处于第几row(rowCount)再在parent()里删除所处的row(),暂未找到其它方法,好像直接删除自己有点不行。
3、菜单栏的问题:
menu=QMenuBar(window)
file_menu=menu.addMenu(‘file’)
file_menu.addAction(‘QAction’,window)
注:一定要加Window,不然不在窗口内。其次Mac Os的菜单栏在最顶上,有时候看不到。
解决后,GUI样子如下:
接下来继续研究:右键菜单栏,难点在于将菜单栏 获取/放入 相应鼠标的位置。
TreeView:与数据库的动态连接与操控,力求完美。