2016-07-27 8 views
1

マウスの左ボタンではなく右マウスボタンで動かすことができる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); 
+2

残念ながら、 'setAcceptedMouseButtons'に渡されるパラメータにかかわらず、' QGraphicsItem :: mouseMoveEvent'のコードは左ボタンでのみ動くように配線されているようです。右側のボタンを移動したい場合は、 'mouseMoveEvent'をオーバーライドして足を自分で動作させる必要があります。 –

+1

ありがとう、それは私がよく疑ったものですが、私は確信が持てませんでした。私は、イベントをフィルタリングして、マウスのボタンを置き換えて、実際の左クリックをフィルタリングしながら、左クリックであるオブジェクトをだますことができます。 – sashoalm

答えて

1

私は最終的に、そしてG.M @としてソースコードに見えました。 ::、QGraphicsItemのコードを指摘mouseMoveEvent()明示的にマウスの左ボタンをチェック:

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

だから何も派生クラスで移動を再実装以外に行うことができません。

関連する問題