从QTableWidget拖拽图片并添加到场景中,可以通过以下步骤实现:
下面是一个示例代码,演示了如何从QTableWidget拖拽图片并添加到场景中:
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QGraphicsScene, QGraphicsView
from PyQt5.QtGui import QPixmap, QImage
from PyQt5.QtCore import Qt, QMimeData
from PIL import Image
import sys
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.tableWidget = QTableWidget(self)
self.tableWidget.setDragEnabled(True)
self.tableWidget.setRowCount(1)
self.tableWidget.setColumnCount(1)
# 添加图片到表格中
image = Image.open("image.jpg")
image = image.resize((100, 100), Image.ANTIALIAS)
qimage = QImage(image.tobytes(), image.width, image.height, QImage.Format_RGB888)
pixmap = QPixmap.fromImage(qimage)
item = QTableWidgetItem()
item.setData(Qt.DecorationRole, pixmap)
self.tableWidget.setItem(0, 0, item)
self.setCentralWidget(self.tableWidget)
self.scene = QGraphicsScene(self)
self.view = QGraphicsView(self.scene)
self.setCentralWidget(self.view)
def dragEnterEvent(self, event):
if event.mimeData().hasFormat("image/jpeg"):
event.accept()
else:
event.ignore()
def dragMoveEvent(self, event):
if event.mimeData().hasFormat("image/jpeg"):
event.setDropAction(Qt.CopyAction)
event.accept()
else:
event.ignore()
def dropEvent(self, event):
if event.mimeData().hasFormat("image/jpeg"):
data = event.mimeData().data("image/jpeg")
image = QImage.fromData(data, "image/jpeg")
pixmap = QPixmap.fromImage(image)
self.scene.addPixmap(pixmap)
event.setDropAction(Qt.CopyAction)
event.accept()
else:
event.ignore()
if __name__ == "__main__":
app = QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())
在这个示例中,我们创建了一个QTableWidget,并将一张图片添加到其中。然后,我们创建了一个QGraphicsScene和一个QGraphicsView,用于显示场景。通过重写dragEnterEvent()、dragMoveEvent()和dropEvent()方法,实现了拖拽图片并添加到场景中的功能。
请注意,这只是一个简单的示例,具体的实现方式可能会根据实际需求有所不同。同时,推荐使用腾讯云的云原生产品来支持云计算相关的开发和部署,具体产品和介绍可以参考腾讯云官方文档。
腾讯云存储知识小课堂
北极星训练营
云+社区技术沙龙[第7期]
云+社区技术沙龙[第17期]
企业创新在线学堂
T-Day
云+社区技术沙龙[第16期]
算法大赛
云上直播间
云上直播间
云+未来峰会
领取专属 10元无门槛券
手把手带您无忧上云