質問

私は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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top