请写出qlabel拖拽的示例代码
时间: 2023-06-05 17:06:35 浏览: 116
下面是一个简单的示例代码,演示如何在Qt中实现QLabel的拖拽:
```python
from PyQt5.QtCore import Qt, QMimeData
from PyQt5.QtGui import QDrag
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
class DraggableLabel(QLabel):
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
# 创建QMimeData对象
mime_data = QMimeData()
mime_data.setText(self.text())
# 创建QDrag对象并启动拖动操作
drag = QDrag(self)
drag.setMimeData(mime_data)
drag.exec_(Qt.CopyAction)
# 防止在拖动标签时文字被选中
def mouseMoveEvent(self, event):
pass
class MainWidget(QWidget):
def __init__(self):
super().__init__()
# 创建可拖拽的QLabel对象
label = DraggableLabel("可拖动的标签", self)
label.setGeometry(50, 50, 100, 30)
if __name__ == "__main__":
app = QApplication([])
window = MainWidget()
window.show()
app.exec_()
```
当用户按下左键并开始移动可拖拽的标签时,程序会先创建一个QMimeData对象,用于传递标签的文本数据。然后创建一个QDrag对象,并将QMimeData对象传递给它。最后调用drag.exec_(Qt.CopyAction)启动拖动操作。在拖动标签时,程序重写了mouseMoveEvent方法以防止文字被选中。
阅读全文