1

ドラッグ アンド ドロップを使用して、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_()

ただし、アイテムを別のアイテムの上にドラッグすると、ドラッグしたアイテムが削除されます-そのアイテムをドロップ位置の上/下に移動したいです。私はこれを間違ってやっていますか?

4

1 に答える 1

1

適切なアイテム フラグを設定して、各コンボ アイテムをドロップ ターゲットとして無効にする必要があります。

これを実現する 1 つの方法を次に示します。

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_()
于 2012-10-30T22:38:14.220 に答える