查看完整版本: [-- 拖拽树可以设置只允许一个根节点吗? --]

QTCN开发网 -> Qt基础编程 -> 拖拽树可以设置只允许一个根节点吗? [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

meetsu 2020-01-19 15:57

拖拽树可以设置只允许一个根节点吗?

各位大佬好:


m_tree->setDragEnabled(true);
m_tree->setDropIndicatorShown(true);
m_tree->setDragDropMode(QAbstractItemView::InternalMove);

如上设置之后,拖拽树就可以拖动里面的子项了。
但是拖到没有结点的位置后,新的结点就和根节点同级了(相当于两个根节点)。

提问:
1.有没有办法设置tree的属性为:只允许一个根节点?
2.或者有没有办法限制拖拽树只能在已有结点里面拖动?

圣域天子 2020-01-19 16:51
Qt自带的树控件的拖拽功能很弱的,好象是缺少必要的事件的。我一直没法用它

lemonzll 2020-01-20 08:27
这种你用qtreewidget没法做,得用qtreeview,model从qabstractitemmodel继承下,定制下dropmimedata函数

meetsu 2020-01-20 14:27
圣域天子:Qt自带的树控件的拖拽功能很弱的,好象是缺少必要的事件的。我一直没法用它 (2020-01-19 16:51) 

对啊,拖拽的信号的都没有,不知道咋办

圣域天子 2020-01-23 09:37
meetsu:对啊,拖拽的信号的都没有,不知道咋办 (2020-01-20 14:27)

也不是完全做不到,需要继承后改写两个方法:
    virtual void dragMoveEvent(QDragMoveEvent *event) override;
    virtual void dropEvent(QDropEvent *event) override;


查看完整版本: [-- 拖拽树可以设置只允许一个根节点吗? --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled