我對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