Сигнал перетаскивания QListWidget internalMove - PullRequest
0 голосов
/ 20 июня 2020

Я изменил dragDropMode моего QListWidget на InternalMove. Теперь можно изменить порядок элементов с помощью перетаскивания.

Теперь мне нужно выполнять функцию в любое время при изменении порядка элементов. Поэтому я хотел бы connect сигнализировать одной из моих функций.

Однако мне сложно найти правильный сигнал. Я пробовал много (например: itemChanged), но пока безуспешно.

Кто-нибудь знает, какой сигнал выдается, когда я изменяю порядок элементов с помощью перетаскивания?

Пример: я бы сделал это как связать действие drag_drop с функцией self.drag_drop_happened().

from PyQt5.QtWidgets import QApplication, QWidget, QListWidget, QVBoxLayout
import sys
class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.InitWindow()

    def InitWindow(self):
        self.setWindowTitle("Drag Drop enabled")
        vbox= QVBoxLayout()
        self.list = QListWidget()
        self.list.insertItem(0, "A")
        self.list.insertItem(1, "B")
        self.list.insertItem(2, "C")
        self.list.insertItem(3, "D")
        self.list.setDragDropMode(self.list.InternalMove)
        vbox.addWidget(self.list)
        self.setLayout(vbox)
        self.show()
        # self.list connect to self.drag_drop_happened()
        
    def drag_drop_happened(self):
        pass
    
App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec())

1 Ответ

1 голос
/ 21 июня 2020
self.list.model().rowsMoved.connect(self.drag_drop_happened)

void QAbstractItemModel :: rowsMoved (const QModelIndex & parent, int start, int end, const QModelIndex & destination, int row)

...