我里面有一个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);
}