我无法接收拖放事件信号,我尝试了在互联网上找到的所有解决方案,但没有成功。拖放事件不发送任何内容。 (我可以拖放QlistWidegt中的项目,我希望触发事件)
我想在触发拖放事件时打印(“sth”)
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")
经过无数个小时的尝试,我终于明白了这一点。 解决方案: 您需要创建自定义信号,因为内部QListWidet拖放信号不是生成的。 您可以使用任何内置的常规事件来发出一个信号,如MousePressEvent、DragEnterEvent等。。。。。 对我来说,我想当你改变QList的顺序时,它会执行某个操作
代码的其余部分:
相关问题 更多 >
编程相关推荐