| 66 | # 可以往外拖的QListWidget |
| 67 | |
| 68 | def __init__(self, *args, **kwargs): |
| 69 | super(DragListWidget, self).__init__(*args, **kwargs) |
| 70 | self.resize(400, 400) |
| 71 | # 隐藏横向滚动条 |
| 72 | self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) |
| 73 | # 不能编辑 |
| 74 | self.setEditTriggers(self.NoEditTriggers) |
| 75 | # 开启拖功能 |
| 76 | self.setDragEnabled(True) |
| 77 | # 只能往外拖 |
| 78 | self.setDragDropMode(self.DragOnly) |
| 79 | # 忽略放 |
| 80 | self.setDefaultDropAction(Qt.IgnoreAction) |
| 81 | # ****重要的一句(作用是可以单选,多选。Ctrl、Shift多选,可从空白位置框选)**** |
| 82 | # ****不能用ExtendedSelection,因为它可以在选中item后继续框选会和拖拽冲突**** |
| 83 | self.setSelectionMode(self.ContiguousSelection) |
| 84 | # 设置从左到右、自动换行、依次排列 |
| 85 | self.setFlow(self.LeftToRight) |
| 86 | self.setWrapping(True) |
| 87 | self.setResizeMode(self.Adjust) |
| 88 | # item的间隔 |
| 89 | self.setSpacing(5) |
| 90 | # 橡皮筋(用于框选效果) |
| 91 | self._rubberPos = None |
| 92 | self._rubberBand = QRubberBand(QRubberBand.Rectangle, self) |
| 93 | |
| 94 | self.initItems() |
| 95 | |
| 96 | # 实现拖拽的时候预览效果图 |
| 97 | # 这里演示拼接所有的item截图(也可以自己写算法实现堆叠效果) |