В Qt сообщите основному классу, что элемент был нажат

ситуация:

у меня есть 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, на какой квадрат щелкнули?

2

Решение

Вы можете общаться между MySquare и ваш диалог с помощью механизма сигнала / слота Qt.
Когда по квадрату щелкают, он издает сигнал, и в диалоге есть слот, который связан с этим сигналом.

Идентифицировать который Квадрат отправил сигнал, есть несколько возможностей:

  • Координаты квадрата передаются по сигналу
  • this указатель MySquare который излучает сигнал передается
  • В слоте вы можете использовать sender функция, чтобы определить, кто испустил сигнал.
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]