X軸のスクロールバーとして機能するようにネイティブの動作を変更せずにQGraphicsItem
(具体的にはQGraphicsRectItem
)の動きを適切に抑制しようとしています。mouseMoveEventでQGraphicsItemの動きを制限する
mouseMoveEvent
関数をオーバーライドしようとしましたが、X方向とY方向の両方で長方形の動作を書き直す必要があります。私はマウスを使って単一の位置にスナップすることができます。 (ここでは長方形はそうスナップされますマウスは途中でそれを保持している):
void SegmentItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
setY(0);
setX(event->scenePos().x() - boundingRect().width()/2);
}
hereが説明するように、私は、今itemChange
で探していますが、それは少し扱いにくく、正確にエレガントではないに見えます。 編集:これは動作するはずですが、現在は動作させるために強制できません。
y軸の動きを制限する方法はありますか? (私はまた後でスクロールバーのエンドストップを作成する必要がありますが、されます)
itemChangeソリューションはリンクされています解決法ですが、実際には非常にエレガントです – Fabio
クールですが、現在は何も制約していないようです。私は_「デフォルトの実装は何もせず、値を返します」_ [クラスリファレンスページ](http://doc.qt.io/qt-4.8/qgraphicsitem.html#itemChange)必要なものを知っていますか変更するには? –