2012-06-09 3 views
1

В QListWidget у меня есть набор записей. Теперь я хочу разрешить пользователю сортировать (переупорядочивать) эти записи с помощью двух кнопок (вверх/вниз).Перемещение элементов вверх и вниз в QListWidget?

Вот часть моего кода:

def __init__(self): 
    QtGui.QMainWindow.__init__(self) 

    self.ventana = Ui_MainWindow() 
    self.ventana.setupUi(self) 

    self.connect(self.ventana.btExit, QtCore.SIGNAL('clicked()'), QtCore.SLOT('close()')) 

    self.connect(self.ventana.btAdd, QtCore.SIGNAL('clicked()'), self.addButton) 
    self.connect(self.ventana.btQuit, QtCore.SIGNAL('clicked()'), self.quitButton) 
    self.connect(self.ventana.btQuitAll, QtCore.SIGNAL('clicked()'), self.quitAllButton) 
    self.connect(self.ventana.btUp, QtCore.SIGNAL('clicked()'), self.upButton) 
    self.connect(self.ventana.btDown, QtCore.SIGNAL('clicked()'), self.downButton) 

def addButton(self): 
    fileNames = QtGui.QFileDialog.getOpenFileNames(self, 'Agregar archivos') 
    self.ventana.listWidget.addItems(fileNames) 

def quitButton(self): 
    item = self.ventana.listWidget.takeItem(self.ventana.listWidget.currentRow()) 
    item = None 

def quitAllButton(self): 
    self.ventana.listWidget.clear() 

def upButton(self): 
    # HOW TO MOVE ITEM 
+0

Дубликат одного ответа в прошлом? http://stackoverflow.com/a/9166163/496445 – jdi

+0

На самом деле я решил это более простым способом, но спасибо –

+0

, возможно, опубликуйте свой ответ и примите его, чтобы закрыть это. Или, по крайней мере, обновите свой вопрос, чтобы показать, что вы его разрешили. – jdi

ответ

2

Ну, после попытки по-разному, это решается путем принятия выбранной записи и вставить его в новое положение.

Для кнопки Up-то вроде этого:

currentRow = self.ventana.listWidget.currentRow() 
    currentItem = self.ventana.listWidget.takeItem(currentRow) 
    self.ventana.listWidget.insertItem(currentRow - 1, currentItem) 

И Даун Баттона это то же самое, за исключением того, что в третьей строке знак «-» изменяется на «+».

Смежные вопросы