如何复制场景中选定的项目 (
self.canvas
)?
def use_duplicate(self):
self.label_btn.setChecked(False)
self.path_btn.setChecked(False)
items = self.canvas.selectedItems()
self.duplicate_stack.append(items)
for item in items:
try:
items = self.duplicate_stack.pop()
print(self.duplicate_stack)
self.canvas.addItem(items)
except Exception as e:
print(e)
我尝试使用列表,然后从列表中抓取项目并将它们添加到我的场景中,但这不起作用。我很好奇为什么没有 .clone() 方法或类似的方法。
如有任何帮助,我们将不胜感激。
基本上只需复制项目的属性并创建其自身的新版本(例如 QGraphicsTextItem):
def duplicate(self):
item = CustomTextItem()
item.setFont(self.font())
item.setDefaultTextColor(self.defaultTextColor())
item.setPlainText(self.toPlainText())
item.setPos(self.pos())
item.setScale(self.scale())
item.setRotation(self.rotation())
item.setZValue(self.zValue())
item.setTransform(self.transform())
item.setTransformOriginPoint(self.transformOriginPoint())
item.setFlag(QGraphicsItem.ItemIsSelectable)
item.setFlag(QGraphicsItem.ItemIsMovable)
item.setToolTip('Text')
self.scene().addItem(item)
return item