gpt4 book ai didi

c++ - 在鼠标单击 Qt 时将信号从子级发送到父级

转载 作者:行者123 更新时间:2023-11-28 01:17:23 26 4
gpt4 key购买 nike

我里面有一个 MainWindow、一个 DockWidget 和一个 QGLWidget。我在 QGLWidget 里面画圆圈。我想将我单击的位置的 x 和 y 坐标打印到 DockWidget 内的标签上。

如果有人能给我指路,我会很高兴吗?

最佳答案

覆盖 QGLWidget 的 QWidget::mousePressEvent(QMouseEvent *)QWidget::mouseReleaseEvent(QMouseEvent *) 并创建用于发送 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);
}

关于c++ - 在鼠标单击 Qt 时将信号从子级发送到父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58232843/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com