【问题标题】:PyQt4: Items disappear when using Drag and Drop with QComboBoxPyQt4:使用 QComboBox 拖放时项目消失
【发布时间】:2012-10-19 22:03:57
【问题描述】:

我想使用拖放来重新排列 QComboBox 中的项目。我试过这个:

from PyQt4.QtGui import QApplication, QComboBox, QAbstractItemView

a = QApplication([''])
c = QComboBox()
c.addItem('a')
c.addItem('b')
c.addItem('c')
c.addItem('d')

view = c.view()
view.setDragDropMode(QAbstractItemView.InternalMove)

c.show()
c.raise_()

a.exec_()

但是,将一个项目拖动到另一个项目的顶部会删除拖动的项目——我希望将该项目移动到放置位置的上方/下方。我做错了吗?

【问题讨论】:

    标签: drag-and-drop qt4 pyqt4 qcombobox


    【解决方案1】:

    需要通过设置适当的item flags 来禁用每个组合项作为放置目标。

    这是实现这一目标的一种方法:

    import sys
    from PyQt4 import QtCore, QtGui
    
    app = QtGui.QApplication(sys.argv)
    combo = QtGui.QComboBox()
    
    model = QtGui.QStandardItemModel()
    for text in 'One Two Three Four'.split():
        item = QtGui.QStandardItem(text)
        item.setFlags(item.flags() & ~QtCore.Qt.ItemIsDropEnabled)
        model.appendRow(item)
    
    combo.setModel(model)
    combo.view().setDragDropMode(QtGui.QAbstractItemView.InternalMove)
    combo.show()
    
    app.exec_()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-20
      • 2013-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多