[英]c++ QT and OpenCV. setMouseCallBack in QLabel?
我正在使用功能setMouseCallback来提取有关每个鼠标事件的像素坐标的信息。 如果使用openCV窗口,则创建的程序可以完美运行。 正是:
图片是cv :: Mat;
cv::namedWindow("Original", WINDOW_NORMAL);
cv::imshow("Original", image);
cv::setMouseCallback("Original", mouseWrapper, NULL);
哪里
void esempio::onMouse(int event, int x, int y, int flags, void *param)
{
//---------------------------------------------------------
// Code to read the mouse event in the identification of a point
//---------------------------------------------------------
if (event == CV_EVENT_LBUTTONDOWN)
{
std::cout << "1: " << x << "," << y << std::endl;
pp_m.x=x;
pp_m.y=y;
}
}
void mouseWrapper( int event, int x, int y, int flags, void* param )
{
esempio * mainWin = (esempio *)(param);
mainWin->onMouse(event,x,y,flags,0);
}
现在,我想在界面中创建的QLabel中使用相同的代码。 我试图通过以下方式使用函数setWindowTitle更改QLabel的名称:
ui->label_show->setWindowTitle("Test");
cv::setMouseCallback("Test", mouseWrapper, NULL);
但是这种方法似乎还不够。
如何指示函数setMouseCallback在所需的QLabel上工作?
谢谢
这可能很困难,因为:
我不明白为什么不使用Qt自己的方式对鼠标事件做出反应。
在表单的构造函数中调用ui->label_show->installEventFilter(this)
并实现虚拟eventFilter
函数。 在此函数中,您可以使用event
参数来检索事件类型和鼠标坐标(在强制转换为QMouseEvent
)。
请参阅事件过滤器 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.