我对pyqt更新,我正在使用它来编写一些GUI,有人可以告诉我如何通过拖放操作来对QListWidget中的项目进行排序吗?如何通过拖放操作对QListWidget中的项目进行排序
由于事先从QAbstractItemView
我对pyqt更新,我正在使用它来编写一些GUI,有人可以告诉我如何通过拖放操作来对QListWidget中的项目进行排序吗?如何通过拖放操作对QListWidget中的项目进行排序
由于事先从QAbstractItemView
QListWidget
继承。您可以使用QAbstractItemView.setDragDropMode()
,并将其设置为QAbstractItemView.InternalMove
,前提是您希望能够通过拖动&删除来更改项目的顺序。
Here's the relevent section of the documentation。
这里是展示在用行动表明一个简单的例子:
import sys
from PyQt4.QtGui import QApplication, QWidget, \
QVBoxLayout, QListWidget, QAbstractItemView
class Widget(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.widget_layout = QVBoxLayout()
# Create ListWidget and add 10 items to move around.
self.list_widget = QListWidget()
for x in range(1, 11):
self.list_widget.addItem('Item {:02d}'.format(x))
# Enable drag & drop ordering of items.
self.list_widget.setDragDropMode(QAbstractItemView.InternalMove)
self.widget_layout.addWidget(self.list_widget)
self.setLayout(self.widget_layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
widget = Widget()
widget.show()
sys.exit(app.exec_())
嗨,谢谢你。但是...我使用qt设计器设置拖放模式,并使用pyuic4生成py代码,我重写dropEvent dropEnterEvent和dargEvent,似乎没有效果。 (所有项目都是图片,并显示为图标) – Zuckonit 2013-04-26 05:56:46
原因-1:问题应该澄清你使用代码QtDesigner,并剔除作简短的自足例如,从去。由于没有详细说明细节,没有代码,没有工作流程的细节,加里休斯的答案可能不会帮助你。 – neuronet 2014-10-07 02:31:18