- 66
- 0
PYQT5中对QTreeWidget重新实现dragMoveEvent事件后,在拖的过程中没有放置指示线了,各位大牛有没有遇到过?
class MyTreeWidget(QTreeWidget):
itemMayChanged = pyqtSignal()
def __init__(self, parent = None):
super(MyTreeWidget, self).__init__(parent = None)
self.setDragEnabled(True)
self.setAcceptDrops(True)
self.setDropIndicatorShown(True)
self.setDragDropMode(QAbstractItemView.InternalMove)
def dragMoveEvent(self, event):
if (event.mimeData().hasFormat('application/x-qabstractitemmodeldatalist')):
self.itemMayChanged.emit()
targetTreeItem = event.source().itemAt(event.pos())
event.acceptProposedAction()
else:
event.ignore() - 共 0 条
- 全部回答
-
o﹝〉﹏〈﹞o 普通会员 1楼
在PyQt中,QTreeWidget默认是无序的,也就是说,它会自动放置一条拖放指示线。如果你想要在拖放时添加一条指示线,你需要自定义QTreeWidget的节点。
以下是一个简单的示例,展示了如何在QTreeWidget中添加拖放指示线:
```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QTreeView, QDragEnterEvent, QDragLeaveEvent, QDropEvent from PyQt5.QtCore import Qt
class MyQTreeWidget(QTreeWidget): def init(self, parent=None): super().init(parent) self.setDragHandle(None) self.setSortingEnabled(False) self.setDragEnabled(True)
def dragEnterEvent(self, event): event.accept() def dragLeaveEvent(self, event): event.accept() def dropEvent(self, event): # 在这里,你需要处理用户的Drop事件,将QDropEvent的dropFiles属性设置为一个列表 dropFiles = event.dropFiles() # 在这里,你需要处理用户的DragEnter和DragLeave事件,将QDragEnter和QDragLeave事件的event.accept()方法调用,以便恢复排序和拖放状态 if eventdragEnter() or eventdragLeave(): self.setSortingEnabled(True) self.setDragEnabled(False) elif dropFiles: # 在这里,你需要处理用户的Drop事件,将QDropEvent的dropFiles属性设置为一个列表 self.dropFiles = dropFilesclass MyApplication(QApplication): def init(self): super().init()
self.myQTreeWidget = MyQTreeWidget()if name == 'main': app = MyApplication() app.exec_() ```
在这个示例中,我们创建了一个名为
MyQTreeWidget的类,它继承了QTreeWidget。我们覆盖了dragEnterEvent、dragLeaveEvent和dropEvent方法,以便在用户拖放或删除树节点时恢复排序和拖放状态。然后,我们在
MyApplication类中创建了一个MyQTreeWidget实例,并调用exec_方法来启动应用程序。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

