pyqt4在Qlistvi中拖放文件

2024-06-02 04:36:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我在qlistview中找不到拖放文件。在

我找到了示例代码。在

但这是qlistwidget和qpushbutton

此示例还使用类

我想在下面的例子拖放。在

为什么不能使用拖放的qlistview?在

在主.py在

from PyQt4 import QtCore, QtGui
from test import *
import sys

class main(QtGui.QMainWindow):
    def __init__(self,parent=None):
        global app
        QtGui.QWidget.__init__(self,parent)
        self.ui=Ui_MainWindow()
        self.ui.setupUi(self)

        app=QtGui.QApplication(sys.argv)
myapp=main()
myapp.show()
app.exec_()

在测试.py在

^{pr2}$

Tags: 文件frompyimportselfappui示例
3条回答
class DragAndDrop(QListView):          
    def __init__(self, parent):
        global listView
        super(DragAndDrop, self).__init__(parent)
        self.setAcceptDrops(True)
        self.setDragDropMode(QAbstractItemView.InternalMove)
        self.setFrameShadow(QFrame.Plain)
        self.setFrameShape(QFrame.Box)
        listView=self

    def dragEnterEvent(self, event):
        if event.mimeData().hasUrls():
            event.acceptProposedAction()
        else:
            super(DragAndDrop, self).dragEnterEvent(event)

    def dragMoveEvent(self, event):
        super(DragAndDrop, self).dragMoveEvent(event)

    def dropEvent(self, event):
        #global itemModel
        if event.mimeData().hasUrls():
            for url in event.mimeData().urls():
                if url.path()[-5:]==".pcap":
                    if itemModel.findItems(url.path()[1:].replace("/","\\")):
                        pass
                    else:
                        item=QStandardItem(url.path()[1:].replace("/","\\"))
                        item.setCheckable(True)
                        itemModel.appendRow(item)
                else:
                    pass
            event.acceptProposedAction()
            self.setModel(itemModel)
        else:
            super(DragAndDrop,self).dropEvent(event)

在我的例子中。在

^{pr2}$

相关问题 更多 >