• 2265阅读
  • 4回复

[讨论]拖拽树可以设置只允许一个根节点吗? [复制链接]

上一主题 下一主题
离线meetsu
 

只看楼主 倒序阅读 楼主  发表于: 2020-01-19
回复本帖可获得5RMB金钱奖励!
每人最多可获奖1次,奖池剩余45RMB金钱 (中奖几率30%)
各位大佬好:


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

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

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

只看该作者 1楼 发表于: 2020-01-19
回帖奖励+ 5
Qt自带的树控件的拖拽功能很弱的,好象是缺少必要的事件的。我一直没法用它
离线lemonzll

只看该作者 2楼 发表于: 2020-01-20
这种你用qtreewidget没法做,得用qtreeview,model从qabstractitemmodel继承下,定制下dropmimedata函数
离线meetsu

只看该作者 3楼 发表于: 2020-01-20
回 圣域天子 的帖子
圣域天子:Qt自带的树控件的拖拽功能很弱的,好象是缺少必要的事件的。我一直没法用它 (2020-01-19 16:51) 

对啊,拖拽的信号的都没有,不知道咋办
离线圣域天子

只看该作者 4楼 发表于: 2020-01-23
回 meetsu 的帖子
meetsu:对啊,拖拽的信号的都没有,不知道咋办 (2020-01-20 14:27)

也不是完全做不到,需要继承后改写两个方法:
    virtual void dragMoveEvent(QDragMoveEvent *event) override;
    virtual void dropEvent(QDropEvent *event) override;
快速回复
限100 字节
 
上一个 下一个