首页 > 其他分享 >[Qt-ColorEditor] Qt颜色编辑器,QColorDialog的优化版,支持RGB和HSV等多种方式选色

[Qt-ColorEditor] Qt颜色编辑器,QColorDialog的优化版,支持RGB和HSV等多种方式选色

时间:2024-01-30 10:25:13浏览次数:26  
标签:颜色 Qt color QColorDialog 选色 ColorEditor btn

外观

分享一下我实现的颜色编辑器,主要原因是Qt的QColorDialog功能较少没法满足需求,目前已经在zeno中使用了,由于zeno有自己的样式表,所以在zeno里长这样:

如果不加样式表的话长这样:

功能

srgb切换

颜色轮选色

颜色文字选色

颜色滑动条选色,RGB和HSV

上一个/当前颜色切换,这个主要是类似于PS之类的软件,可以缓存一个颜色用来备选或者撤销

屏幕取色,主要实现是截取当前的屏幕然后根据鼠标的位置设置颜色,支持多个屏幕(我自己只测试了2个屏幕)

颜色面板,可以把想要的颜色记录在这,持久化存储,即便关闭下一次打开也会自动加载

互补色取色,主要参考color-wheel

地址

github地址Qt-ColorEditor

实现时都放在一个头文件和一个源文件里,因此集成到项目里只需要复制这两个文件

接口参照QColorDialog的方式:

#include "ColorWidgets/ColorEditor.h"
// ...
// call here, you can find this in MainWindow.cpp
auto btn = new ColorButton(this);
btn->setColor(Qt::blue);
setCentralWidget(btn);

connect(btn, &ColorButton::clicked, this, [this, btn](){
    auto color = ColorEditor::getColor(btn->color(), this, "");
    btn->setColor(color);
});

最后还得说一句,QColorDialog的功能确实有点少了,我在实现的时候参考了很多3D软件,如Houdini、Blender、Unity等,其中Houdini的功能最多,因此最终的形态也和Houdini类似了。

标签:颜色,Qt,color,QColorDialog,选色,ColorEditor,btn
From: https://www.cnblogs.com/miyanyan/p/17996532

相关文章

  • 小项目:使用MQTT上传温湿度到Onenet服务器
    前言我们之前分别编写了DHT11、ESP8266和MQTT的代码,现在我们将它们仨整合在一起,来做一个温湿度检测小项目。这个项目可以实时地将DHT11传感器获取到的温湿度数据上传到OneNET平台。通过登录OneNET,我们随时随地可以查看温湿度数据。这种环境监测项目的应用场景有很多,其中......
  • 【Qt】Qt-文本文件读写
     读取文本文件(编码UTF8)QStringfilename="";QFilefile(filename);if(!file.open(QIODevice::Text|QIODevice::ReadOnly)){  log("Openfilefailed!");  return;}QTextStreamin(&file);in.setCodec("UTF-8");QStringline=in.re......
  • C++ Qt开发:运用QJSON模块解析数据
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QJson组件的实现对JSON文本的灵活解析功能。JSON(JavaScriptObjectNotation)是一种轻量级......
  • Qt QtConcurrent::run()函数的两种写法
    第一种,使用lambda表达式1QFuture<void>future=QtConcurrent::run([=](){2//Codeinthisblockwillruninanotherthread3});4...第二种,使用成员函数调用QByteArray的成员函数split()1//call'QList<QByteArray>QByteArray::split(charsep)c......
  • QT Creator12.0.1运行普通C/C++程序时候没有控制台输出
    问题:QTCreator12.0.1运行普通C/C++程序时候没有控制台输出菜单栏选择:[编辑]->[设置],按下图依次设置。启用终端输出,还有去掉内部终端输出的选项运行后控制台窗口正常弹出......
  • Qt/C++音视频开发64-共享解码线程/重复利用解码/极低CPU占用/画面同步/进度同步
    一、前言共享解码线程主要是为了降低CPU占用,重复利用解码,毕竟在一个监控系统中,很可能打开了同一个地址,需要在多个不同的窗口中播放,形成多屏渲染的效果,做到真正的完全的画面同步,在主解码线程中切换了播放进度,所有关联的同一个解码线程的播放窗体也会立即同步画面,使得感官上看起来......
  • Qt 深度解析QMap与QHash
    一、QMap深度解析1、QMap是一个以升序键顺序存储键值对的数据结构(1)QMap原型为classQMap<K,T>模板(2)、QMap中的键值对根据key进行了排序(3)、QMap中的key类型必须重载operator<(小于操作符)2、QMap使用实例一 3、QMap使用实例二4、QMap的注意事项(1)、通过key获取Value时......
  • CLion搭建Qt开发环境,并解决目录重构问题(最新版)
    序言Qt版本不断更新,QtCreator也不断更新。在Qt4和Qt5时代,我一直认为开发Qt最好的IDE就是自带的QtCreator,可是时至今日,到了Qt6时代,QtCreator已经都12.0.1版本了,不仅没变的更好用,反而变得更难用了。一方面可能是我被JetBrains全家桶和各种AI代码提示插件给惯坏了,另一方面也可能是开......
  • 【QT】选择和打开中文路径文件目录
    场景:Qt选择和打开目录,支持中文、空格等实现:#选择目录QStringstrDir="D:\\";QStringqslPath=QFileDialog::getExistingDirectory(this,"",strDir);ui->l_path->setText(qslPath);#打开目录QStringpath=ui->l_path->text();if(!path.isEmpty())QDe......
  • pyqt5基本安装过程(内含pip改变默认安装路径的方法)
    今天安装pyqt的时候发现pip总是会安装到一个我自己都找不到的地方,安装完和没安装一样,每次都只能靠pycharm中设置的安装库来救命。为了愉快的用命令行下载软件包(其实是因为qt需要安装的包太多),我改变了它的默认安装路径。如何改变pip默认安装路径先看一下python安装的默认位置以......