Browse Source

修改不能复制的错误

master
付春阳 5 days ago
parent
commit
d7d248a82b
2 changed files with 9 additions and 6 deletions
  1. +7
    -5
      customgraphicsscene.cpp
  2. +2
    -1
      hmimodule.cpp

+ 7
- 5
customgraphicsscene.cpp View File

@@ -69,7 +69,9 @@ void CustomGraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent)
} }


setMode(Normal); setMode(Normal);
} else {
}
else
{
QGraphicsScene::mousePressEvent(mouseEvent); QGraphicsScene::mousePressEvent(mouseEvent);
} }
} }
@@ -110,8 +112,9 @@ void CustomGraphicsScene::keyPressEvent(QKeyEvent *keyEvent)
break; break;
case Qt::Key_V: case Qt::Key_V:
if (keyEvent->modifiers() & Qt::ControlModifier) { if (keyEvent->modifiers() & Qt::ControlModifier) {
// 获取最后一个鼠标事件的位置来确定粘贴位置
emit pasteRequestFromScene(views().first()->mapToScene(views().first()->mapFromGlobal(QCursor::pos())));
// 使用与 contextMenuEvent 相同的方式获取粘贴位置
QPointF pastePos = views().first()->mapToScene(views().first()->viewport()->mapFromGlobal(QCursor::pos()));
emit pasteRequestFromScene(pastePos);
keyEvent->accept(); keyEvent->accept();
} }
break; break;
@@ -141,8 +144,7 @@ void CustomGraphicsScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *conte


menu.exec(contextMenuEvent->screenPos()); menu.exec(contextMenuEvent->screenPos());
} else { } else {
// 如果点击在图形项上,则将事件传递给该图形项处理
// (这会调用 HmiComponent::contextMenuEvent)
// 如果点击在图形项上,则将事件传递给该图形项处理(这会调用 HmiComponent::contextMenuEvent)
QGraphicsScene::contextMenuEvent(contextMenuEvent); QGraphicsScene::contextMenuEvent(contextMenuEvent);
} }
} }

+ 2
- 1
hmimodule.cpp View File

@@ -117,7 +117,8 @@ void HMIModule::onPasteRequested(const QPointF& scenePos)
if (newItem) { if (newItem) {
newItem->setColor(m_copiedColor); newItem->setColor(m_copiedColor);
// 为了避免完全重叠,给一个小的偏移量 // 为了避免完全重叠,给一个小的偏移量
newItem->setPos(scenePos + QPointF(10, 10));
newItem->setPos(scenePos);
m_scene->addItem(newItem);


// 使用辅助函数完成添加和信号连接 // 使用辅助函数完成添加和信号连接
// 注意:setupNewComponent内部会再次生成“创建”日志,这里是合理的 // 注意:setupNewComponent内部会再次生成“创建”日志,这里是合理的


Loading…
Cancel
Save