我尝试使用下面的python代码使用QGraphicsView和QGraphicsScene方法创建一个矩形
mytext2 = QtWidgets.QGraphicsSimpleTextItem(“AD: ” + self.pushButton_2.text())
scene.addItem(mytext2)
mytext2.setPos(640, 70)
rect_item1 = QtWidgets.QGraphicsRectItem(QtCore.QRectF(70, 70, 640, 220))
rect_item1.setFlag(QtWidgets.QGraphicsItem.ItemIsMovable, False)
rect_item1.setPen(QPen(Qt.darkYellow, 5, Qt.DashDotDotLine))
scene.addItem(rect_item1)
上面的方法看起来都不错,但我想知道如何将具有可拖动文本和图像作为背景的QLineEdit拖放到QGraphicsView上并对其进行动画处理。
我为QGraphicsView创建了一个类,如下所示。
class QGraphView(QtWidgets.QGraphicsView):
Graph_dropped = QtCore.pyqtSignal(str)
def __init__(self, parent):
super().__init__(parent)
self.setAcceptDrops(True)
def dragEnterEvent(self, q_graphics_event):
q_graphics_event.accept()
q_graphics_event.acceptProposedAction()
if q_graphics_event.mimeData().hasFormat(‘text/plain’):
q_graphics_event.accept()
else:
q_graphics_event.ignore()
def dropEvent(self, event):
self.Graph_dropped.emit(event.mimeData().text())
使用以下代码实例化QGraphicsView
self.graphicsView_2 = QGraphView(self.tab_4)
self.graphicsView_2.setGeometry(QtCore.QRect(140, 620, 751, 261))
self.graphicsView_2.setObjectName(“graphicsView_2”)
self.graphicsView_2.Graph_dropped.connect(self.draw_apps)
self.scene_2 = QtWidgets.QGraphicsScene(self.tab_4)
self.graphicsView_2.setScene(self.scene_2)
现在,我尝试使用QGraphicsScene将Linewidget添加到QGraphicsView中,但是我相信不会触发dragEnterEvent。
def draw_apps(self, scene_2):
mytext3 = QtWidgets.QGraphicsItem(self.lineEdit_13)
#QGraphicsSimpleTextItem(“APPS: ” + self.pushButton.text().split(‘-’)[1].capitalize())
self.scene_2.addItem(mytext3)
mytext3.setPos(120, 20)