如何使用自定义项目小部件拖放 QListWidget 项目?
Posted
技术标签:
【中文标题】如何使用自定义项目小部件拖放 QListWidget 项目?【英文标题】:How can I drag drop QListWidget items with custom item widgets? 【发布时间】:2014-07-20 12:18:24 【问题描述】:如果我使用QListWidget
默认项目,我可以拖放它的项目(感谢setDragDropMode
),但如果我使用自定义项目小部件(setItemWidget
)我无法拖放。我该如何解决?
这是我用自定义小部件项目制作列表的代码:
alist = QListWidget()
alist.setDragDropMode(QAbstractItemView.InternalMove)
for i in range(20):
itemWidget = QPushButton('Test' + str(i))
item = QListWidgetItem('item ' + str(i))
item.setSizeHint(QSize(0,100))
alist.addItem(item)
alist.setItemWidget(item, itemWidget)
vbox = QVBoxLayout()
vbox.addWidget(QPushButton())
vbox.addWidget(alist)
self.setLayout(vbox)
【问题讨论】:
Fabrico :您使用 listWidget 而不是 listView 是他们的任何具体原因吗? @thecreator232 我实际上不知道两者之间的区别。 QT 上的新功能。我正在尝试制作一个图层组件(文本、预览图标、可见性按钮)并尝试将它们放入一个支持拖放的可滚动组件中。所以我不需要手动编写所有代码。 【参考方案1】:检查这是否可行。
alist = QListWidget()
alist.setAcceptDrops(True)
alist.setDragEnabled(True)
alist.setDragDropMode(QAbstractItemView.InternalMove)
for i in range(20):
itemWidget = QPushButton('Test' + str(i))
item = QListWidgetItem('item ' + str(i))
item.setSizeHint(QSize(0,100))
alist.addItem(item)
alist.setItemWidget(item, itemWidget)
vbox = QVBoxLayout()
vbox.addWidget(QPushButton())
vbox.addWidget(alist)
self.setLayout(vbox)
【讨论】:
以上是关于如何使用自定义项目小部件拖放 QListWidget 项目?的主要内容,如果未能解决你的问题,请参考以下文章
QListWidget 拖放与通过 setItemWidget 设置的自定义小部件