2

情况

Dialog在 QT 有一堂课,我在上面画了一个正方形的栅格。正方形在MySquare类 ( MySquare: QGraphicsItem) 中实现。

MySquare 内部有许多函数(mysquare.h protected: )

    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

您可以MySquare通过 Qt 的信号/槽机制在和您的 Dialog 之间进行通信。当一个方块被点击时,它会发出一个信号,并且对话框有一个连接到该信号的插槽。

要确定是哪个方格发送了信号,有几种可能性:

  • 正方形的坐标在信号中传递
  • 发出信号的this指针MySquare被传递
  • 在插槽中,您可以使用该sender函数来确定是谁发出了信号。
于 2013-01-05T12:25:47.103 回答