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);
    }
}
相关推荐
艾莉丝努力练剑8 小时前
【AI大模型接入SDK】Gemini模型接入知识体系
java·开发语言·网络·人工智能·网络协议·学习·http
传奇开心果编程8 小时前
【Rust入门知识点学与练】第13课:枚举 Enum
开发语言·学习·rust
zhanghaha13148 小时前
Python进阶教程:28_queue 队列模块 零基础超详细教程
java·开发语言·python
司小豆8 小时前
第七课:DeepSeek Harness 服务与依赖注入
java·服务器·开发语言·github·ai编程
weixin199701080168 小时前
[特殊字符]《闲鱼 + 淘宝 + 1688 三平台库存同源:二手ERP主数据治理与超卖防御》(附Python源码)
开发语言·python
ltqshs8 小时前
C语言-链表例程
c语言·开发语言·链表
shmily麻瓜小菜鸡8 小时前
JavaScript / TypeScript 易踩坑知识点 —— 作用域与变量类
开发语言·javascript·typescript
YYYing.8 小时前
【C++进阶系列 (一)】关于线程堆栈的那些事 (上篇)
c语言·开发语言·c++·线程堆栈
zh73148 小时前
Go 1.23 → 1.26 升级检查文档
开发语言·chrome·golang
CRMEB系统商城8 小时前
汽车养护连锁的数字化底座CRMEB 多门店系统实战方案
java·开发语言·小程序·开源·汽车