【问题标题】:how to sort the items in QListWidget by drop and drag如何通过拖放对 QListWidget 中的项目进行排序
【发布时间】:2013-04-19 01:56:00
【问题描述】:

我是 pyqt 的新手,我正在使用它来编写一些 GUI,谁能告诉我如何通过拖放对 QListWidget 中的项目进行排序?

提前致谢

【问题讨论】:

  • -1 的原因:问题应该澄清您使用 QtDesigner 中的代码,并选择一个简短的独立示例供您参考。由于指定的细节很少,没有代码,也没有工作流程的细节,Gary Hughes 的回答可能对你没有帮助。

标签: python drag-and-drop pyqt qlistwidget


【解决方案1】:

QListWidget 继承自 QAbstractItemView。如果您希望能够通过拖放更改项目的顺序,可以使用 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 Designer设置拖拽模式,用pyuic4生成py代码,我重写了dropEvent dropEnterEvent和dargEvent,好像没有效果。 (所有项目都是图片,并显示为图标)
猜你喜欢
  • 2018-01-24
  • 2021-08-05
  • 2019-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多