QT 树形结构 拖拽实现

ff007bit 2012-02-07 10:49:02
我想在界面中添加一个树形结构显示信息.不知道应该使用QTreeWidget还是QTreeView?
我的要求是要可以实现拖拽功能,可以将一个分支的项拖拽到另一个分支中.

另外,如果使用QTreeWidget,添加数据的时候是不是要一行一行的insert?听人说过要使用Model,可以简化操作,QTreeWidget也可以使用Model吗?应该怎么使用?


最好有源代码可以让我分析一下.
邮箱:ff007007@tom.com
十分感谢.
...全文
1404 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
米饭拌面 2013-03-15
  • 打赏
  • 举报
回复
引用 3 楼 xiachm 的回复:
使用QTreeWidget也可以完成拖动,而且效率也不差。 设置setDragDropMode(QAbstractItemView::InternalMove); 然后重载bool dropMimeData(QTreeWidgetItem *parent, int index, const QMimeData *data, Qt::DropAction act……
不重载 dropMimeData函数 的话视觉上能完成么?我说的是model/view结构 为什么我这里视觉上也没有处理呢、、、
xiachm 2012-02-07
  • 打赏
  • 举报
回复
使用QTreeWidget也可以完成拖动,而且效率也不差。

设置setDragDropMode(QAbstractItemView::InternalMove);

然后重载bool dropMimeData(QTreeWidgetItem *parent, int index, const QMimeData *data, Qt::DropAction action)方法。

视觉上的事情Qt已经帮你做完了,你只需要在这个方法中把模型调整好就OK了。效率与Model/View结构是一样的,反正调整模型是怎么也少不了的。

如果我没记错的话。呵呵
wangxkww 2012-02-07
  • 打赏
  • 举报
回复
如果要使用 model/view框架,应该使用QTreeView,否则使用QTreeWidget,关于model/view的使用方法,见文档:http://developer.qt.nokia.com/doc/qt-4.8/model-view-programming.html

关于拖拽么,楼下来解答吧
ff007bit 2012-02-07
  • 打赏
  • 举报
回复
自己顶一下
ff007bit 2012-02-07
  • 打赏
  • 举报
回复
楼上说的对.我再看看资料.
xiachm 2012-02-07
  • 打赏
  • 举报
回复
没有这种组件

其实楼主还停留在QTreeWidget的思路上,如果使用模型/视图结构,就不要指望一次给出多条数据,视图只会一条一条的向模型请求数据。
ff007bit 2012-02-07
  • 打赏
  • 举报
回复
我的树形结构数据量比较大,而且要频繁操作.
我还有一个问题:我的树形结构如下图

每一个Object是一项,下面的para是它的属性.每项都对应这几个属性.

在设计树的Node的时候,每个属性要单独设计一个Node,然后人为把他们连接到一个Object节点吗?
有没有可能只设计一个节点,里面封装了一个Object的所有属性,显示的时候自动一子节点的形式显示出来?
xiachm 2012-02-07
  • 打赏
  • 举报
回复
不要盲目使用QTreeView,否则会把一件原本简单的事情搞复杂了。

如果你需要维护的数据超过一两千个时,可以考虑使用QTreeView
如果你需要在视图上做复杂编辑时,可以考虑使用QTreeView
如果你的视图需要展示更多非文本的内容时,可以考虑使用QTreeView

总之,尽量优先考虑QTreeWidget,如果不能满足需求时,可以考虑使用QTreeView
ff007bit 2012-02-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xiachm 的回复:]

使用QTreeWidget也可以完成拖动,而且效率也不差。

设置setDragDropMode(QAbstractItemView::InternalMove);

然后重载bool dropMimeData(QTreeWidgetItem *parent, int index, const QMimeData *data, Qt::DropAction action)方法。

视……
[/Quote]
那除去拖拽的其他方面呢,QTreeWidget还是QTreeView比较好?
谢谢回复

16,816

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧