2012-10-30 3 views
1

끌어서 놓기를 사용하여 QComboBox의 항목을 다시 배열하고 싶습니다. 다른 항목 위에 드래그 된 항목 항목을 삭제합니다 드래그, 그러나PyQt4 : 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_() 

- 내가 그 아이템이 드롭 위치 위/아래 이동하려면 : 나는 이것을 시도했다. 이 잘못하고 있습니까?

답변

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_() 
+0

완벽한, 감사 :

여기에 그것을 달성하기위한 하나의 방법입니다! – ChrisB

관련 문제