【问题标题】:How can I drag drop QListWidget items with custom item widgets?如何使用自定义项目小部件拖放 QListWidget 项目?
【发布时间】: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 上的新功能。我正在尝试制作一个图层组件(文本、预览图标、可见性按钮)并尝试将它们放入一个支持拖放的可滚动组件中。所以我不需要手动编写所有代码。

标签: python c++ qt pyqt


【解决方案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)

【讨论】:

    猜你喜欢
    • 2017-05-26
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    相关资源
    最近更新 更多