2

状況

DialogQTに、正方形のラスターを描画するクラスがあります。正方形はMySquareクラス(MySquare: QGraphicsItem)に実装されています。

MySquareの内部には、いくつかの関数があります(mysquare.h保護:)

    void mousePressEvent(QGraphicsSceneMouseEvent *event);
    void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
    void keyPressEvent(QKeyEvent *event);
    void mouseMoveEvent(QGraphicsSceneMouseEvent *event);

正方形をクリックすると、次の関数を使用して正方形の相対座標が表示されます。

void MySquare::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
    update();
    QGraphicsItem::mousePressEvent(event);
    qDebug() << "mouse Pressed";
    qDebug() << "coordinates:";
    qDebug() << "X:"<< x/w << " Y:" << y/h ;
}

ここに画像の説明を入力してください

ここで、xとyはラスター内のxとyの位置であり、wとhは幅と高さを表します。

ただし、私の質問は、どの正方形がクリックされたかをDialogクラスに知らせるにはどうすればよいですか?

4

1 に答える 1

1

MySquareQtのシグナル/スロットメカニズムを使用して、とダイアログの間で通信できます。正方形がクリックされると、それは信号を発し、ダイアログにはその信号に接続されたスロットがあります。

どの正方形が信号を送信したかを識別するために、いくつかの可能性があります。

  • 正方形の座標は信号で渡されます
  • 信号を発するのthisポインタが渡されますMySquare
  • スロットでは、このsender機能を使用して、誰が信号を発信したかを判別できます。
于 2013-01-05T12:25:47.103 に答える