Отправить сигнал от ребенка к родителю при щелчке мышью Qt - PullRequest
0 голосов
/ 04 октября 2019

У меня есть MainWindow, DockWidget и QGLWidget внутри. Я рисую круги внутри QGLWidget. Я хочу напечатать координаты x и y места, которое я нажимаю, на ярлыки внутри DockWidget.

Буду рад, если кто-нибудь покажет мне дорогу?

1 Ответ

2 голосов
/ 04 октября 2019

Переопределите QWidget::mousePressEvent(QMouseEvent *) или QWidget::mouseReleaseEvent(QMouseEvent *) QGLWidget и создайте сигнал для отправки x и y. Это означает, что вы должны создать собственный класс, наследующий от QGLWidget. Это может выглядеть так:

void MyGLWidget::mouseReleaseEvent(QMouseEvent *event)
{
  emit printXY(event->pos());
}

и в MyGLWidget.h:

signals:
void printXY(const QPointF& clickedPos);

, затем создайте слот в DockWidget:

public slots:
void onPrintXY(const QPointF& clickedPos);

и подключитеэто в том месте, где вы создаете MyGLWidget. Я полагаю, в какой-то функции DockWidget, как:

void DockWidget::createGLWidget()
{
  MyGLWidget widget = new MyGLWidget;
  connect(widget, &MyGLWidget::printXY, this, &DockWidget::onPrintXY);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...