ситуация:
у меня есть 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, на какой квадрат щелкнули?
Вы можете общаться между MySquare
и ваш диалог с помощью механизма сигнала / слота Qt.
Когда по квадрату щелкают, он издает сигнал, и в диалоге есть слот, который связан с этим сигналом.
Идентифицировать который Квадрат отправил сигнал, есть несколько возможностей:
this
указатель MySquare
который излучает сигнал передаетсяsender
функция, чтобы определить, кто испустил сигнал.Других решений пока нет …