如何使用自定义项窗口小部件拖放放置QListWidget项?

时间:2014-05-30 16:51:19

标签: python c++ qt pyqt

如果我使用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)

1 个答案:

答案 0 :(得分:0)

检查这是否有效。

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)