qt qwidget拖放
时间: 2023-12-30 20:23:52 浏览: 112
在Qt中,QWidget类提供了拖放功能,可以通过重写dragEnterEvent和dropEvent方法来实现拖放操作。
下面是一个示例代码,演示了如何在QWidget中实现拖放功能:
```python
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtCore import Qt, QMimeData
from PyQt5.QtGui import QDrag
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.setAcceptDrops(True)
def dragEnterEvent(self, event):
if event.mimeData().hasUrls():
event.accept()
else:
event.ignore()
def dropEvent(self, event):
if event.mimeData().hasUrls():
event.setDropAction(Qt.CopyAction)
event.accept()
urls = event.mimeData().urls()
for url in urls:
print(url.toLocalFile())
if __name__ == '__main__':
app = QApplication([])
widget = MyWidget()
widget.show()
app.exec_()
```
在这个示例中,我们创建了一个自定义的QWidget类MyWidget,并重写了dragEnterEvent和dropEvent方法。在dragEnterEvent方法中,我们判断拖入的数据是否为URLs类型,如果是则接受拖放操作,否则忽略。在dropEvent方法中,我们获取拖放的URLs,并打印出文件路径。
你可以将这段代码保存为一个.py文件,然后运行它,就可以看到一个窗口,你可以将文件拖放到窗口中,程序会打印出文件的路径。
阅读全文