使QGraphicsItem可以通过鼠标右键而不是左移动

时间:2016-07-27 07:03:07

标签: c++ qt qgraphicsitem

是否可以创建一个可移动的QGraphicsItem,用鼠标右键而不是左键移动?

我通过搜索找到的唯一内容是一个帖子which suggests using QGraphicsItem::setAcceptedMouseButtons(),我尝试将其设置为仅接受右键点击,但之后项目停止了可移动。

这是我尝试过的代码:

QGraphicsScene *scene = new QGraphicsScene(this);
ui->graphicsView->setScene(scene);
QGraphicsRectItem *item = scene->addRect(0, 0, 100, 100);
item->setFlag(QGraphicsItem::ItemIsMovable);
item->setAcceptedMouseButtons(Qt::RightButton);

1 个答案:

答案 0 :(得分:1)

我最终查看了源代码,并作为@ G.M。指出,QGraphicsItem :: mouseMoveEvent()的代码显式检查鼠标左键:

void QGraphicsItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
    if ((event->buttons() & Qt::LeftButton) && (flags() & ItemIsMovable)) {

除非重新实现派生类中的移动,否则无法完成任何事情。