首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >QListWidget悬垂事件

QListWidget悬垂事件
EN

Stack Overflow用户
提问于 2020-07-19 11:30:30
回答 1查看 195关注 0票数 1

我无法接收拖放事件信号,我尝试了在互联网上找到的每一个解决方案,但都没有成功。拖放事件没有发送任何信息。(我可以在QlistWidegt中拖放项目,我希望事件被触发)

当拖放事件触发时,我想打印(“某物”)。

代码语言:javascript
运行
复制
from PySide2 import QtCore
from PySide2 import QtUiTools
from PySide2 import QtWidgets
from shiboken2 import wrapInstance
from PySide2 import QtGui

class ReOrder(QtWidgets.QDialog):

    def __init__(self, parent=maya_main_window()):
        super(ReOrder, self).__init__(parent)
        self.setWindowTitle("ReOrder ")
    
       
 
        self.setFixedSize(300,405)
          ################################### Calling The methods below                 
        
        self.CreateWidegts()
        self.Createlayouts()
        self.init_ui()

        self.setMouseTracking(True)
        
             ############### Working Area ###########################


    def init_ui(self):
        
      

        self.myListWidget.setDragEnabled(True)
        self.myListWidget.setAcceptDrops(True)
        self.myListWidget.setDefaultDropAction(QtCore.Qt.MoveAction)
        self.myListWidget.setDragDropMode(QtWidgets.QAbstractItemView.InternalMove)
        
       
        self.myListWidget.setFont(QtGui.QFont('Berlin Sans FB Demi', 12))
        self.myListWidget.addItem("Item1","Item2","Item3")

       ##I tried to get the drag drop event using the QlistWidget build in signals but ..
         #self.myListWidget.currentItemChanged.connect(self.dosth)
        
 
        

    def CreateWidegts(self):
        self.myListWidget = QtWidgets.QListWidget() 
        self.GoBtn = QtWidgets.QPushButton("ReOrder")


    def Createlayouts(self):
        mainLayout = QtWidgets.QVBoxLayout(self) 
        mainLayout.addWidget(self.myListWidget)
     
        mainLayout.addWidget(self.GoBtn)

    def dosth(self):
        print("dosth")

###### Drag Drop event ##########

    def dropEvent(self, event):
         event.accept()
         print("Drop event Triggered")

    def dragEvent(self, event)
         event.accept()
         print("drag event Triggered")
EN

回答 1

Stack Overflow用户

发布于 2020-07-19 22:58:42

经过无数个小时的尝试,我终于想出了答案。解决方案:您需要创建一个自定义信号,因为内部QListWidet拖放信号不是生成的。您可以在一般情况下使用任何构建来发出像MousePressEvent、DragEnterEvent、……这样的信号。对我来说,我想当你改变QList的顺序时,它会执行某事物。

代码语言:javascript
运行
复制
class TheQListWiget(QtWidgets.QListWidget):
    CustDragSig = QtCore.Signal()

    def dropEvent(self, event):
        super(TheQListWiget,self).dropEvent(event)
        event.accept()
        self.CustDragSig.emit()

其余代码如下:

代码语言:javascript
运行
复制
class ReOrder(QtWidgets.QDialog):

    def __init__(self, parent=maya_main_window()):
        super(ReOrder, self).__init__(parent)
        self.setWindowTitle("ReOrder ")
        self.setFixedSize(300,405)
          ################### Calling The methods below                 
        
        self.CreateWidegts()
        self.Createlayouts()
        self.init_ui()

        self.setMouseTracking(True)
        
             ############### Working Area ###########################


    def init_ui(self):
        

        self.myListWidget.setDragEnabled(True)
        self.myListWidget.setAcceptDrops(True)
        self.myListWidget.setDefaultDropAction(QtCore.Qt.MoveAction)
        self.myListWidget.setDragDropMode(QtWidgets.QAbstractItemView.InternalMove)
        
       
        self.myListWidget.setFont(QtGui.QFont('Berlin Sans FB Demi', 12))
        self.myListWidget.addItem("Item1","Item2","Item3")
        
        self.myListWidget.CustDragSig.connect(self.do_sth)

    def CreateWidegts(self):
        self.myListWidget = TheQListWiget() ### Your QList must from CustomClass
        self.GoBtn = QtWidgets.QPushButton("ReOrder")


    def Createlayouts(self):
        mainLayout = QtWidgets.QVBoxLayout(self) 
        mainLayout.addWidget(self.myListWidget)
        mainLayout.addWidget(self.GoBtn)

    def do_sth(self):
        print("Custom Signal Emitted !")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62979673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档