MCPcopy Create free account
hub / github.com/PyQt5/PyQt / DropListWidget

Class DropListWidget

QListWidget/DragDrop.py:23–62  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

21
22
23class DropListWidget(QListWidget):
24 # 可以拖进来的QListWidget
25
26 def __init__(self, *args, **kwargs):
27 super(DropListWidget, self).__init__(*args, **kwargs)
28 self.resize(400, 400)
29 self.setAcceptDrops(True)
30 # 设置从左到右、自动换行、依次排列
31 self.setFlow(self.LeftToRight)
32 self.setWrapping(True)
33 self.setResizeMode(self.Adjust)
34 # item的间隔
35 self.setSpacing(5)
36
37 def makeItem(self, size, cname):
38 item = QListWidgetItem(self)
39 item.setData(Qt.UserRole + 1, cname) # 把颜色放进自定义的data里面
40 item.setSizeHint(size)
41 label = QLabel(self) # 自定义控件
42 label.setMargin(2) # 往内缩进2
43 label.resize(size)
44 pixmap = QPixmap(size.scaled(96, 96, Qt.IgnoreAspectRatio)) # 调整尺寸
45 pixmap.fill(QColor(cname))
46 label.setPixmap(pixmap)
47 self.setItemWidget(item, label)
48
49 def dragEnterEvent(self, event):
50 mimeData = event.mimeData()
51 if not mimeData.property('myItems'):
52 event.ignore()
53 else:
54 event.acceptProposedAction()
55
56 def dropEvent(self, event):
57 # 获取拖放的items
58 items = event.mimeData().property('myItems')
59 event.accept()
60 for item in items:
61 # 取出item里的data并生成item
62 self.makeItem(QSize(100, 100), item.data(Qt.UserRole + 1))
63
64
65class DragListWidget(QListWidget):

Callers 1

DragDrop.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected