pyqt5在两个listwidget之间拖放listitem消失

问题描述

我有一个带有两个 QListWidgets 的简单应用

我想:

  1. 在它们之间拖放
  2. 重新排列其中的顺序。

问题:当我尝试在其中一个 QListWidgets 中重新排列顺序时,QListItem 消失了。
这是一个小例子(我使用的是python3

import sys

from PyQt5 import QtCore,QtWidgets
from PyQt5.QtWidgets import QApplication,QWidget,QLabel
from PyQt5.QtCore import Qt


class DragWidget(QtWidgets.QListWidget) :
   def __init__(self,parent,total=None) :
      super(DragWidget,self).__init__(parent)     
      self.setSizePolicy(QtWidgets.QSizePolicy.Expanding,QtWidgets.QSizePolicy.Minimum)
      
      #Want horizontal listwidgets.
      self.setFlow(QtWidgets.QListView.Flow.LeftToRight)
      
      #Here's the attempt to configure dragging.
      self.setDragEnabled(True)
      self.setDragDropMode(QtWidgets.QAbstractItemView.DragDrop)
      self.setDropIndicatorShown(True) 
      self.setDefaultDropAction(Qt.MoveAction)
      self.viewport().setAcceptDrops(True)  
     
      self.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)     
      self.setResizeMode(QtWidgets.QListView.ResizeMode.Adjust)      
      self.setSpacing(2)
      self.setFixedHeight(50)

   #An attempt to overload the dragenterEvent
   def dragenterEvent(self,event) :
      #Use the InternalMove if the source = the drop site
      if (event.source() is self):        
         self.setDragDropMode(QtWidgets.QAbstractItemView.InternalMove)
      else :
         #And regular ol' DragDrop if not.
         self.setDragDropMode(QtWidgets.QAbstractItemView.DragDrop)
      super().dragenterEvent(event)

class DragDemo(QtWidgets.QDialog) :
   def __init__(self,parent=None,*args,**kwargs) :
      super().__init__()
   
      layout = QtWidgets.qgridLayout()
      groupBox = QtWidgets.qgroupbox("display Columns")
      groupBox.setLayout(layout)

      showlist = DragWidget(groupBox)     
      options = ['type','name','timestamp']
      itemlist = []
      for option in options :       
         item = QtWidgets.QListWidgetItem(option,showlist)
         itemlist.append(item)          
      layout.addWidget(showlist,0)
      
      hidelist = DragWidget(groupBox)
      layout.addWidget(hidelist,1,0)
      
      vlayout = QtWidgets.QVBoxLayout()
      vlayout.addWidget(groupBox)
      
      self.setLayout(vlayout)
      self.show()

app = QApplication(sys.argv)
demo = DragDemo() 
demo.show()
sys.exit(app.exec_())       

谁能告诉我我做错了什么? 任何和所有帮助表示赞赏。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)