Qt实现Halcon窗口显示当前图片坐标

一、前言

Halcon加载图片的窗口,不仅能放大和缩小图片,还可以按住Ctrl键显示鼠标下的灰度值,这种方式很方便我们分析缺陷的灰度和对比度。

二、实现方式

① 创建显示坐标和灰度的widget窗口

下图的是widget部件,使用了4个label控件,2个用于显示图标,另外两个分别显示坐标值和灰度值

② 鼠标在GraphicsView上移动时,判断Ctrl按键是否被按下。如果按下则在当前鼠标位置的附近显示widget部件,使用move移动到坐标位置

三、效果展示:

四、注意事项及解决方式

① 子部件Widget被遮挡问题

解决方式:当鼠标移动到右下角时,子部件会被父窗体遮挡,可以将其设置为Qt::Window,显示在最上方。当这样做时,注意move的坐标是屏幕坐标,所以别忘记转换:maptoGlogal

setWindowFlags(Qt::FramelessWindowHint | Qt::Window);

② 鼠标碰触到子部件,导致父控件无法接受到鼠标事件,从而不正常显示

解决方式:重写子部件的事件,将鼠标移动和键盘的事件传递给父控件

复制代码
void ui_grayShow::mouseMoveEvent(QMouseEvent* event)
{
    QWidget::mouseMoveEvent(event);
    if (parentWidget())
    {
        QCoreApplication::sendEvent(parentWidget(), event);
    }
}
void ui_grayShow::keyReleaseEvent(QKeyEvent* event)
{
    QWidget::keyReleaseEvent(event);
    if (parentWidget())
    {
        QCoreApplication::sendEvent(parentWidget(), event);
    }
}
相关推荐
鹤归时起雾.4 分钟前
Vue3响应式编程核心指南
开发语言·vue3
郝学胜-神的一滴22 分钟前
Linux信号四要素详解:从理论到实践
linux·服务器·开发语言·网络·c++·程序人生
yangpipi-22 分钟前
《C++并发编程实战》 第3章 在线程间共享数据
开发语言·c++
fish_xk24 分钟前
c++基础
开发语言·c++
MoonBit月兔24 分钟前
审美积累 | MoonBit LOGO 投稿作品速递
开发语言·编程·moonbit
缘三水1 小时前
【C语言】12.指针(2)
c语言·开发语言·指针
Python学习导航1 小时前
Python开源项目月排行 2025年10月
开发语言·python
爱吃巧克力的程序媛1 小时前
Qt 异步编程---概述
开发语言·qt
feifeigo1231 小时前
MATLAB实现两组点云ICP配准
开发语言·算法·matlab
Yang-Never1 小时前
Open GL ES->以指定点为中心缩放图片纹理的完整图解
android·java·开发语言·kotlin·android studio