簡體   English   中英

如何通過鼠標事件交換 QListWidget 中的 QListWidgetItem?

[英]How to swap the QListWidgetItem in QListWidget by mouse event?

我想實現連接到相應圖像的圖像圖標列表。 現在,我想交換圖像圖標列表以更改它們在列表中的索引。

如何順利交換圖標?

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

您確實需要設置ViewModeDragDropMode

只需將以下這些行添加到initGUI方法中:

self.listwidget.setViewMode(QListView.ListMode)
self.listwidget.setDragDropMode(QAbstractItemView.InternalMove)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM