【发布时间】:2015-05-26 12:43:16
【问题描述】:
我在 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);
将使整个窗口成为鼠标跟踪区域。
【问题讨论】:
-
对于跟踪,我认为你也必须设置 setMouseTracking(true)。
-
我会尝试从 QLabel 进行子类化,并将信号附加到它的
void QWidget::mousePressEvent(QMouseEvent * event)