QTreeWidget系列--QTreeWidgetItem可随意移动(拖拽),更换父亲节点

方法分如下两步:

第一步,在datatree类(继承自qtreewidget)的构造函数中设置这棵树具有如下两种特征:

setDefaultDropAction(Qt::MoveAction);

setDragDropMode(QAbstractItemView::DragDrop);

第二步,重写 startdrag()函数,在里面写上如下代码:

void CDataTree::startDrag(Qt::DropActions /*supportedActions*/)
{
  QMimeData *mimeData = new QMimeData;
  mimeData->setText(“fasfas”);
  QDrag *drag = new QDrag((QWidget*)(this));
  drag->setMimeData(mimeData);
  drag->exec(Qt::MoveAction);//注意这里一定要是MoveAction
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Python的Qt框架提供了一种方便的可视化控件,即QTreeWidget,用于创建基于树状结构的项目列表。每个项目都是一个QTreeWidgetItem对象,它可以包含子项目并且可以扩展或折叠以显示和隐藏其子项目。 QTreeWidgetItem本身是可编辑的,这意味着用户可以直接在控件中编辑文本内容。要使QTreeWidgetItem可编辑,可以使用setFlags()方法来设置编辑标志。可以将Qt.ItemIsEditable标志添加到项的标志中。 例如,以下代码段创建一个可编辑的QTreeWidget项目: ``` from PyQt5.QtWidgets import * app = QApplication([]) treeWidget = QTreeWidget() root = QTreeWidgetItem(treeWidget, ['Root item']) # Add a child item child1 = QTreeWidgetItem(root, ['Child item 1']) # Set child item as editable child1.setFlags(child1.flags() | Qt.ItemIsEditable) # Show the tree widget treeWidget.show() app.exec_() ``` 在上述代码中,我们创建了一个树状结构,包括一个根项和一个子项。我们使用setFlags()方法将子项标记为可编辑。当用户单击子项以编辑它时,会在界面上显示一个文本框,允许用户编辑文本内容。 总的来说,QTreeWidgetItem的可编辑特性非常有用,可以使用户直接在控件中进行编辑,而不必打开独立的编辑界面。这为用户提供了一种更为直观的操作方式,使得应用程序更加易于使用和维护。 ### 回答2: Python qtreewidgetitem是一种可以用来在PyQt5编程框架中创建可编辑的树形控件的类。通过使用这个类,你可以创建一个树形表格,包含多列数据,每一列都可以被编辑。 在qtreewidgetitem中,你可以创建子节点,使得整个树形控件非常多层次化。它还可以访问并控制树形控件的各种属性,如样式、显示项等。你可以定义树形控件中每一个项目所拥有的属性,如文本、图像、状态等信息。 qtreewidgetitem也支持树形控件中项目的拖拽移动、删除等操作。你可以在树形控件中编辑单元格的内容,完成数据的输入和修改。 总结来说,Python qtreewidgetitem是一种非常强大的树形控件类,可以帮助你创建可编辑的树形表格,同时也支持多种操作。在PyQt5编程中,qtreewidgetitem是一个值得学习和掌握的类。 ### 回答3: python中的QTreeWidgetItem是一种可以用于显示层级结构的小部件。它可以用来创建一个树形结构的列表,每一个元素都有自己的子节点。而QTreeWidgetItem的可编辑性,指的是用户可以直接在该小部件中编辑每个节点的文本。在默认情况下,QTreeWidgetItem是不可编辑的。如果想要让他可编辑,我们可以通过设置QTreeWidgetItem的属性值来实现。代码如下: ```python # 导入需要的类 from PyQt5.QtWidgets import QApplication, QTreeWidget, QTreeWidgetItem # 创建一个树形窗口 app = QApplication([]) tree = QTreeWidget() # 创建几个根节点 root1 = QTreeWidgetItem(None, ["根节点1", "4", "1.2"]) root2 = QTreeWidgetItem(None, ["根节点2", "3", "5.2"]) root3 = QTreeWidgetItem(None, ["根节点3", "5", "3.8"]) # 添加子节点 child1 = QTreeWidgetItem(root1, ["子节点1", "2", "7.1"]) child2 = QTreeWidgetItem(root2, ["子节点2", "5", "2.2"]) child3 = QTreeWidgetItem(root3, ["子节点3", "1", "5.8"]) # 设置可编辑属性 tree.editItem(child1) # 显示树形窗口 tree.show() app.exec() ``` 在上面的代码中,我们先创建了一个QTreeWidget,然后创建了三个根节点和三个子节点,并将它们添加到QTreeWidget中。接着,我们通过调用`tree.editItem(child1)`函数,将子节点child1设置为可编辑状态。这样用户就可以直接在程序中编辑树形列表节点的文本信息了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值