ので、私は同様の質問のかなり多くがここにあります知っているが、どれも本当に私が興味を持って特定のポイントに到達していない。QGraphicsscene:QGraphicsItemsの(ゴムバンドによる)選択を実装する方法は?
私はQGraphicsItem
Sのカスタム選択動作を実装する(例えば選択にその色を変更します)。どうやらこれはアイテム自体によって処理されるため、QGraphicsItem
を拡張する独自のクラスを作成する必要があります。そこに、私は実際には、onSelectionToggled
メソッド(スロット)のように、何かを無効にすることができます。しかし、最後に、mousePressEvent
メソッドをオーバーライドする必要があることを理解しました(すべての「選択」は、左クリックの抽象概念のより具体的な用語です)。だから、
この方法では、私が呼び出した場合:
setPen(QPen(QColor("orange")));
update();
私は単一の項目をクリックすると、色が実際に変化します。 しかし、シーンのラバーバンドを介して選択が行われたときは、 onSelectionToggled
がないので、シーンが交差したアイテムのそれぞれのマウスイベントを「シミュレート」すると思いました。
これは当てはまらないので、私の質問は「どのようにラバーバンドを介してそのような選択肢に反応できますか?」です。理想的には、 "統一された"方法(マウスクリックによる個々の選択のための特別なコードなし)。
また、点線で囲まれた境界矩形が選択範囲に描画されないようにする方法もあります。私はそれを望んでおらず、QGraphicsItem
をサブクラス化するときにそれを自動的に取り除くことを望んでいました。
大きな質問ではなく、点線の四角形については、QStyle :: drawPrimitive' ... – IAmInPLS
@AlexisPを再実装する必要があります。真剣に? QStyleはQGraphicsScene :: setStyleですべて使用できる多くの派生クラスを持つ抽象クラスですから、私はこれらのクラスをすべてサブクラス化してdrawPrimitiveメソッドをオーバーライドする必要があるようです。または、QStyleのサブクラスを1つだけ選択しますが、シーンのスタイルに適応する能力が失われます。 KDE、Mac OS、またはWindows(QStyleは実際には、私が見る限り)で動作します。 –