一、前言

在做很多项目的UI界面的时候,相信绝大部分人都有过抄袭别人的UI界面尤其是颜色的时候,毕竟十个程序员九个没有审美,或者说审美跟一坨屎一样,大家主要的精力以及擅长点都是在写功能实现具体功能上面,这个事情怎么说呢,这确实是程序员的主要职责,但是在大部分的小公司,UI也都是需要程序员自己去搞定的,自己想不出来怎么办,借鉴咯,不知道颜色值怎么办,用颜色拾取器点一下咯。

Qt内置的grabWindow方法,可以指定句柄获取对应的颜色,所以如果要对屏幕取得颜色值的话,传入整个屏幕的句柄即可,屏幕的句柄在Qt中的表示是QApplication::desktop()->winId(),要实时获取怎么办呢,当然最简单的办法就是开个定时器咯,定时器不断调用这个方法,获取屏幕鼠标坐标和颜色值。

二、代码思路

void ColorWidget::showColorValue()
{
if (!pressed) {
return;
} int x = QCursor::pos().x();
int y = QCursor::pos().y(); txtPoint->setText(tr("x:%1 y:%2").arg(x).arg(y));
QString strDecimalValue, strHex, strTextColor;
int red, green, blue; #if (QT_VERSION <= QT_VERSION_CHECK(5,0,0))
QPixmap pixmap = QPixmap::grabWindow(QApplication::desktop()->winId(), x, y, 2, 2);
#else
QScreen *screen = QApplication::primaryScreen();
QPixmap pixmap = screen->grabWindow(QApplication::desktop()->winId(), x, y, 2, 2);
#endif if (!pixmap.isNull()) {
QImage image = pixmap.toImage(); if (!image.isNull()) {
if (image.valid(0, 0)) {
QColor color = image.pixel(0, 0);
red = color.red();
green = color.green();
blue = color.blue();
QString strRed = tr("%1").arg(red & 0xFF, 2, 16, QChar('0'));
QString strGreen = tr("%1").arg(green & 0xFF, 2, 16, QChar('0'));
QString strBlue = tr("%1").arg(blue & 0xFF, 2, 16, QChar('0')); strDecimalValue = tr("%1, %2, %3").arg(red).arg(green).arg(blue);
strHex = tr("#%1%2%3").arg(strRed.toUpper()).arg(strGreen.toUpper()).arg(strBlue.toUpper());
}
}
} if (red > 200 && green > 200 && blue > 200) {
strTextColor = "10, 10, 10";
} else {
strTextColor = "255, 255, 255";
} QString str = tr("background-color: rgb(%1);color: rgb(%2)").arg(strDecimalValue).arg(strTextColor);
labColor->setStyleSheet(str);
txtRgb->setText(strDecimalValue);
txtWeb->setText(strHex);
}

三、效果图

四、开源主页

  • 以上作品完整源码下载都在开源主页,会持续不断更新作品数量和质量,欢迎各位关注。
  • 本开源项目已经成功升级到V2.0版本,分门别类,图文并茂,保你爽到爆。
  • Qt开源武林秘籍开发经验,看完学完,20K起薪,没有找我!
  1. 国内站点:https://gitee.com/feiyangqingyun/QWidgetDemo
  2. 国际站点:https://github.com/feiyangqingyun/QWidgetDemo
  3. 开源秘籍:https://gitee.com/feiyangqingyun/qtkaifajingyan
  4. 个人主页:https://qtchina.blog.csdn.net/
  5. 知乎主页:https://www.zhihu.com/people/feiyangqingyun/

Qt开源作品23-颜色拾取器的更多相关文章

  1. HTML5、canvas颜色拾取器

    效果图: 代码: <!doctype html> <html lang="en"> <head> <meta charset=" ...

  2. 第四界css大会 黑魔法-css网格背景、颜色拾取器、遮罩、文字颜色渐变、标题溢出渐变等

    1.css网格背景 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  3. js颜色拾取器

    几年前,很难找到一个合适的颜色选择器.正好看到很多不错的JavaScript颜色选择器插件,故而把这些编译汇总.在本文,Web设计师和开发人员 Kevin Liew 选取了11个相应插件,有些会比较复 ...

  4. NX二次开发-Block UI C++界面Object Color Picker(对象颜色拾取器)控件的获取(持续补充)

    Object Color Picker(对象颜色拾取器)控件的获取 NX9+VS2012 #include <uf.h> #include <uf_obj.h> UF_init ...

  5. Qt开源作品38-无边框窗体方案(无抖动,支持win、linux、mac等系统,侧边半屏顶部全屏)

    一 前言 不知道各位程序员有没有遇到过这样一种困惑,好不容易在开源网站找到了类似的想要的项目代码,结果down下来一编译,我勒个去,几百个错误,根本没法用,熟悉的人还好可以直接阅读代码进行修改(有些只 ...

  6. 推荐一款jQuery ColorPicked 颜色拾取器插件

    先看实现的效果图, 本文底部有完整demo 不想看我墨迹的可以跳过了^_^. 官网地址:http://www.eyecon.ro/colorpicker/#about 代码SVN 地址:https:/ ...

  7. bigcolorpicker 颜色拾取器插件——例

    参考:http://bigui4.sinaapp.com/picker/colorpicker.html 效果: html: <!DOCTYPE html> <html> &l ...

  8. Github上的一些高分Qt开源项目【多图】

    游戏2D地图编辑器: 著名的TileMap编辑器,做2D游戏开发的一定不会陌生. Go 语言的IDE: Go语言的集成开发环境. Clementine Music Player: 功能很完善且跨平台支 ...

  9. 基于Android的rgb七彩环颜色采集器

    代码地址如下:http://www.demodashi.com/demo/11892.html 一.前言. 在大学期间,看到这个rgb灯,蛮好奇的,这么漂亮的颜色采集,并且可以同步到设备rbg灯颜色, ...

  10. [Swift通天遁地]一、超级工具-(18)创建强大、灵活的日期时间拾取器

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

随机推荐

  1. KubeSphere 社区双周报|2024.06.21-07.04

    KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...

  2. 字符串和json相互转换

    字符串转成json格式 JSON.parse(string) json格式转成字符串 JSON.stringify(obj) 在vue中还可以使用qs插件使用this.$qs.stringify(ob ...

  3. Machine Learning week_2 Environment Setup Instructions

    PerFace 第二周会使用矩阵来扩充之前的线性回归和梯度下降. 第二周一开始,吴恩达老师在课程开始前,引导我们做 MATLAB 和 Octave 的前期准备工作.这两个都可以完成编程作业.给了Oct ...

  4. 用JavaScriptt从一个路径字符串中获取文件名

    思路 1.通过'\'关键字用split分割成数组 2.取分割后数组的最后一个就是文件名 3.另外,字符串中\是没意义的,需要2个\\ 相关代码 <script> var a='C:\\Pr ...

  5. 2024 xp_CAPTCHA(瞎跑-白嫖版) 4.3最新版安装使用教程

    前言 xp_CAPTCHA(瞎跑-白嫖版)是一个免费的burpsuite插件,具有自动化图形验证码识别的功能.在安装的过程中,我发现网上的教程基本都为其较早的版本,已经不具备参考价值.因而我写下本篇博 ...

  6. frida 连接夜神模拟器

    adb connect 127.0.0.1:62001 adb devices adb forward tcp:27042 tcp:27042 adb forward tcp:27043 tcp:27 ...

  7. zkw 线段树-原理及其扩展

    前言 许多算法的本质是统计.线段树用于统计,是沟通原数组与前缀和的桥梁. <统计的力量>清华大学-张昆玮 关于线段树 前置知识:线段树 OIWiki. 线段树是一种专门维护区间问题的数据结 ...

  8. Linux系统搭建性能测试监控体系

    一.安装Grafana 1.Grafana介绍(默认端口3000): Grafana是一个开源的监控和可视化工具,用于显示和跟踪各种指标,数据和日志,支持多种源,包括influxDB.promethe ...

  9. NZOJ 模拟赛8

    T1 布尔(CF2030C) CF2030C 爱丽丝和鲍勃正在玩一个游戏.游戏中有一个由 n 个布尔值组成的列表,每个布尔值要么为真,要么为假,以长度为 n 的二进制字符串表示(其中 1 表示为真,0 ...

  10. 服务器cli模式下的定时器

    有时候需要一部分后台业务异步的处理,比如处理redis队列啊,处理mysql统计啊,数据同步啊,这种长时间任务,但是又需要每段时间去看看的,发现linux cron最小只能支持每分钟的任务 分 时 天 ...