当前位置: 首页 > article >正文

Qt 获取鼠标所在点颜色的RGB值,考虑多屏幕情况

窗体类ColorPickerWidget ,继承QWidget
创建一个定时器,每隔一段时间获取鼠标所在点的颜色

QTimer *timerRGB = new QTimer(this);
connect(timerRGB, &QTimer::timeout, this, &ColorPickerWidget ::on_showRGB);
timerRGB->start(100);
void ColorPickerWidget ::on_showRGB()
{
    //获取鼠标位置
    QPoint mousePos = QCursor::pos();

    //获取鼠标所在屏幕
    QScreen *screen = QGuiApplication::screenAt(mousePos);
    if (!screen)
        return;
        
    //获取鼠标位置的颜色
    QPixmap pixmap = screen->grabWindow(0);
    QColor color = pixmap.toImage().pixelColor(mousePos - screen->geometry().topLeft());

    QString rgbString = QString("R:%1,G:%2,B:%3").arg(color.red()).arg(color.green()).arg(color.blue());
}
  • QCursor::pos():获取全局的鼠标位置,它返回的是屏幕坐标系中的位置,因此在多屏幕情况下,它将返回屏幕的绝对位置,而不是当前屏幕的局部坐标。
  • QGuiApplication::screenAt(mousePos):根据鼠标的全局位置来获取鼠标所在的屏幕。它会返回一个 QScreen 对象,表示包含该坐标的屏幕。
  • screen->grabWindow(0):从 QScreen 对象抓取屏幕的整个内容(包括桌面区域)。
  • pixmap.toImage().pixelColor():获取鼠标位置的颜色。
  • mousePos - screen->geometry().topLeft():由于 QPixmap::grabWindow() 捕获的是屏幕截图,并且包含了屏幕的起始坐标,因此我们需要将鼠标坐标转换为相对于当前屏幕的局部坐标来获取正确的位置。

http://www.kler.cn/a/536717.html

相关文章:

  • HTML之CSS三大选择器
  • 解决 npm : 无法加载文件 D:\nodeJS\node_global\npm.ps1,因为在此系统上禁止运行脚本。
  • 【文件上传、秒传、分片上传、断点续传、重传】
  • 使用 CSS 实现透明效果
  • 解密 Java Lambda 表达式中的 “effectively final“ 陷阱
  • 系分成长指南
  • 机器学习 - 容易混淆的目标函数和损失函数
  • 借助 Cursor 快速实现小程序前端开发
  • 探秘数据结构之单链表:从原理到实战的深度解析
  • ​零技术开始,但想用 Next.js 基于 React 构建一个类似 18Touch 的网站​
  • 【开源项目】数字孪生武汉~超经典智慧城市CIM/BIM数字孪生可视化项目——开源工程及源码
  • (文末提供数据集下载)ML.NET库学习001:基于PCA的信用卡异常检查之样本处理与训练
  • 如何在Windows上使用Docker
  • OCR与多模态大模型的关系
  • PDF转图片及拼接- ImageMagick
  • 【学习笔记】OpenGL的基础纹理贴图相关知识
  • HarmonyOS 5.0应用开发——ContentSlot的使用
  • PyMysql 快速入门——Python 操作 MySQL 数据库的利器
  • Zenoh在工业物联网场景中的性能研究
  • 【开源AI】AI一页一页读PDF
  • 【算法专场】分治(下)
  • 对接DeepSeek
  • MapReduce简单应用(二)——去重、排序和平均
  • 深入解析:如何利用 Java 爬虫按关键字搜索淘宝商品
  • node.js内置模块之---crypto 模块
  • 操作系统端口占用排查与进程处理实用指南