c++ - Qt - QLabel 上的鼠标事件

标签 c++ qt events qlabel

我在 mainwindow.cpp 中有这段测试代码:

bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
  if (event->type() == QEvent::MouseMove)
  {
    QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
    qDebug() << QString("Mouse move (%1,%2)").arg(mouseEvent->pos().x()).arg(mouseEvent->pos().y());
  }
  return false;
}

我只想在单击时获取鼠标位置,并将坐标发送到带有 OpenCV 循环的另一个线程,该循环将提取 HSV 信息并相应地执行操作。我使用鼠标悬停只是为了测试。

问题是我不知道如何将其(跟踪、单击)附加到 QLabel labelKalibracja,我用它来显示视频帧,而不是整个窗口。

ui->labelKalibracja->installEventFilter(this);

应该可以工作,但没有,但是

qApp->->installEventFilter(this);

将使整个窗口成为鼠标跟踪区域。

最佳答案

您应该检查事件过滤器的对象:

if (qobject_cast<QLabel*>(obj)==ui->labelKalibracja && event->type() == QEvent::MouseMove)
{
   ...
}

现在您可以确保该事件是针对该标签的。请注意,事件过滤器可以安装在多个对象上,您有责任识别对象和事件的组合。

关于c++ - Qt - QLabel 上的鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30458937/

相关文章:

c++ - 使用spirit x3 解析字符串列表,后跟字符串列表

c++ - CUDA/推力中分段数据的矢量化上限

C++ 模板选择 - 异常情况

c++ - 从不同线程写入文件的正确方法(使用 Qt c++)

c++ - 使用 Qt Creator 表单进行适当的子类化?

java - 在 Android 2.1 中使用 getRotationMatrix 和 getOrientation

facebook - 如何使用 Graph API 以编程方式向页面添加事件?

c++ - 将 OpenGL 中的特定相机 View 保存为图像

c++ - OpenCV 3.0 videoio 错误

java - android一键下多个事件