如何通过鼠标事件在QListWidget中交换QListWidgetItem?

问题描述 投票:0回答:1

我想实现连接到相应图像的图像图标列表。现在,我想交换图像图标列表以更改其在列表中的索引。

如何顺利交换图标?

GIF波纹管:

我想要的

“”

我现在拥有的(与ListWiget一起使用)

“”

import sys
from PyQt5.QtGui import QPixmap, QIcon
from PyQt5.QtWidgets import *


class MainWindow(QWidget):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.layout = QHBoxLayout(self)
        self.label = QLabel()
        self.listwidget = QListWidget()
        self.initGUI()

    def initGUI(self):
        self.listwidget.setViewMode(QListView.IconMode)
        qPixmap = QPixmap('images/002.jpg')
        self.label.setPixmap(qPixmap)
        image_list_item = QListWidgetItem()
        icon = QIcon()
        icon.addPixmap(qPixmap, QIcon.Normal, QIcon.Off)
        image_list_item.setIcon(icon)
        self.listwidget.addItem(image_list_item)

        w = self.listwidget.sizeHintForColumn(0) + 2 * self.listwidget.frameWidth()
        self.listwidget.setFixedSize(w, 512)

        qPixmap = QPixmap('images/003.jpg')
        image_list_item = QListWidgetItem()
        icon = QIcon()
        icon.addPixmap(qPixmap, QIcon.Normal, QIcon.Off)
        image_list_item.setIcon(icon)
        self.listwidget.addItem(image_list_item)

        self.layout.addWidget(self.listwidget)
        self.layout.addWidget(self.label)


app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()
python pyqt pyqt5
1个回答
0
投票

您确实需要设置ViewModeDragDropMode

只需将以下几行添加到initGUI方法中:

self.listwidget.setViewMode(QListView.ListMode)
self.listwidget.setDragDropMode(QAbstractItemView.InternalMove)
© www.soinside.com 2019 - 2024. All rights reserved.