我試圖得到一個文件拖放到一個窗口(我試過同樣的事情用QListWidget沒有成功有太多)PyQt的拖放 - 什麼也沒有發生
test.py:
#! /usr/bin/python
# Test
from PyQt4 import QtCore, QtGui
import sys
from qt_test import Ui_MainWindow
class MyForm(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setupUi(self)
self.__class__.dragEnterEvent = self.DragEnterEvent
self.__class__.dragMoveEvent = self.DragEnterEvent
self.__class__.dropEvent = self.drop
self.setAcceptDrops(True)
print "Initialized"
self.show()
def DragEnterEvent(self, event):
event.accept()
def drop(self, event):
link=event.mimeData().text()
print link
def main():
app = QtGui.QApplication(sys.argv)
mw = MyForm()
sys.exit(app.exec_())
if __name__== "__main__":
main()
而這裏的qt_test.py
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'untitled.ui'
#
# Created: Thu May 20 12:23:19 2010
# by: PyQt4 UI code generator 4.6
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
MainWindow.setAcceptDrops(True)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
我讀過this email而且我是按照一切說有。我仍然沒有得到任何輸出,除了「初始化」,並且拖動似乎沒有被接受(無論是文件管理器的文件還是文本編輯器拖動的純文本)。你知道我做錯了什麼嗎?
謝謝!
在我的情況,我發現,而QListView需要dragMoveEvent的重新實施,除了dragEnter事件和下降事件。 QListWidget只有後兩種。 – jorxster 2017-07-11 03:01:48