いくつかのQGraphicsItemのQTでの一つのマウスプレス
-
25-09-2019 - |
質問
私はQGraphicsSceneでQGraphicsItemのマトリックスを持っていると私は要素をクリックしたときには、それの色が変わります。これはmousePressEvent()
で実装されています。私は彼らのmousePressEvent()
を誘発するため、クリックしてホールドし、他のQGraphicsItemの上にカーソルを移動し、あまりにも自分の色を変更できるようにしたい。
問題は、マウスによる私はすべてのイベントとhoverEnterEvent()
がトリガされていない「続ける」をクリックし、最初の要素をつかむことです。私はungrabMouse()
にmousePressEvent()
を追加しようとしたが、それは助けにはならなかった。
私は1つのソリューションがQGraphicsitemのドラッグ可能なを作成し、そのためにQTのドラッグアンドドロップ機能を使用することであろうと思います。実際、私はこれを持っています:
void dragEnterEvent(QGraphicsSceneDragDropEvent *event)
{
changeColor();
}
私は要素を介してアプリケーションからテキストをドラッグしたとき、私はそれをしたいのようには、それが動作しますが、ないときI「ドラッグ」QGrahphicsItemます。
だから、クリックされたマウスボタンでそれらの上にマウスを移動しながら、トリガー・イベントのことができるようにするためにQGraphicsItemのドラッグ可能にする唯一のソリューションです?
解決 2
私は解決策を自分自身を発見しました。私はすべての私のQGraphicsRectItemのQGraphicsItemGroupにを追加し、このグループのためのイベントを実施しました。グループ:: MouseMoveEvent()で、私は、カーソルの位置を確認し、その子にイベントを適用します。それはこのようになります:
void Group::mouseMoveEvent ( QGraphicsSceneMouseEvent * event )
{
if (boundingRect().adjusted(0,0,-1,-1).contains(event->pos()))
{
if (CellCoordinate(event->pos()) != lastChangedCell_) {
lastChangedCell_ = CellCoordinate(event->pos());
modifyCell(CellCoordinate(event->pos()));
}
}
}
あなたは同じ問題を抱えていると私に連絡すること自由に詳細感触が必要な場合。
他のヒント
私はmouseMoveEvent()
を使用してお勧めします。
編集:親mouseMoveEvent()
のQGraphicsView