QT 在QTabWidget中设置一些调色板
这次所做的项目中需要用到如下功能,点击tableWidget中的子项,将会弹出颜色选值对话框,实现子项的改变,如下图所示:

1、首先,将自己定制的调色板放入tableWidget中
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
myPushButton = new MyQPushButton(this);
ui.tableWidget->setCellWidget(i, j, myPushButton); //插入第i行,j列
}
}
2、头文件
#pragma once #include <QObject>
#include <QPushButton>
#include <QColorDialog>
#include <QMouseEvent>
class MyQPushButton : public QPushButton //公有继承QPushButton
{
Q_OBJECT public:
MyQPushButton(QWidget *parent);
~MyQPushButton();
void setColor();//设置随机颜色
void setColor(QColor color);//设置特定颜色
QColor getColor() const;//获取颜色
private slots:
void choiceColor(void); //方法一,通过信号与槽连接
protected:
void mousePressEvent(QMouseEvent *event); //方法二、通过重写鼠标按下事件
};
3、源文件
#include "MyQPushButton.h" MyQPushButton::MyQPushButton(QWidget *parent): QPushButton(parent)
{
//connect(this, SIGNAL(clicked()), this, SLOT(choiceColor(void))); //方法1
/*下面两行代码必须有,否则效果会有差异*/
setAutoFillBackground(true); //设置自动填充背景
setFlat(true); //设置成平面
} MyQPushButton::~MyQPushButton()
{ }
/*点击本身响应的槽函数*/
void MyQPushButton::choiceColor(void)
{
QColor color = QColorDialog::getColor(Qt::white, this); //调出颜色选择器对话框
QPalette pal; //此类包含每个小部件状态的颜色组
pal.setColor(QPalette::Button, color); //QPalette::Button, ColorRole enum定义了当前gui中使用的不同符号颜色角色。
setPalette(pal);
}
/*鼠标按下事件*/
void MyQPushButton::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
QPalette pal;
pal.setColor(QPalette::Button, QColorDialog::getColor());
this->setPalette(pal);
}
}
/*设置随机颜色*/
void MyQPushButton::setColor()
{
QColor color(rand() % , rand() % , rand() % );//产生一组随机的rgb值
QPalette pal;
pal.setColor(QPalette::Button, color);
setPalette(pal);
}
/*设置给定的颜色*/
void MyQPushButton::setColor(QColor color)
{
QPalette pal;
pal.setColor(QPalette::Button, color);
setPalette(pal);
}
/*获取当前颜色*/
QColor MyQPushButton::getColor() const
{
return this->palette().color(QPalette::Button);
}
4、获取当前按钮的颜色。
QColor theColor=((MyQPushButton*)ui.tableWidget->cellWidget(i, j))->palette().color(QPalette::Button);//cellWidget(i, j)的返回值是QWidget*,所以一定要注意使用MyQPushButton*进行类的强制转化(不能使用MyQPushButton)。
补充:获取颜色列表,可参考:https://blog.csdn.net/rl529014/article/details/51589096
QT 在QTabWidget中设置一些调色板的更多相关文章
- Qt应用程序中设置字体
Qt应用程序中设置字体 应用程序中经常需要设置字体,例如office软件或者是其他的编辑器软件等等.这里主要涉及到如下几个概念:字体,字号以及风格(例如:粗体,斜体,下划线等等).Qt里面也有对应的类 ...
- Qt设计器中设置border-image注意问题
Qt版本4.8.5,Windows7操作系统,在Qt设计师中通过样式表设计设置widget的border-image属性,debug版本编译会正常显示,但是release版本编译运行就不显示,把图片格 ...
- Qt532.【转】Qt在pro中设置运行时库MT、MTd、MD、MDd,只适合VS版本的Qt
ZC:具体应该设置 什么参数,可以参看 自己转载的文章:"VC.[转]采用_beginthread__beginthreadex函数创建多线程 - CppSkill - 博客园.html&q ...
- 【转】Qt在pro中设置运行时库MT、MTd、MD、MDd,只适合VS版本的Qt
http://blog.csdn.net/caoshangpa/article/details/51416077 一.在pro中设置运行时库 最近在用Qt5.6.0(VS2013版本)调用一份用Vis ...
- Qt与PyQT中设置ToolBar在AllowedArea的显示
因为个人对传统的软件GUI界面不是太喜欢,最近又在学习Qt和PyQt5,所以就有了设置ToolBar在窗口的不同地方的想法,经过浪里淘沙,最终在Qt官网里找到了,原来再添加toolBar的时候是由设置 ...
- PyQt(Python+Qt)学习随笔:Qt Designer中部件的调色板palette属性和字体font属性设置
一.调色板 在Qt Designer的部件属性中,有个部件调色板(palette)的属性,进入后,如下图所示: 1.调色板palette Qt中提供的调色板palette用于管理控件的外观显示,对应P ...
- Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())
在Qt中设置widget背景颜色或者图片方法很多种:重写paintEvent() , 调色板QPalette , 样式表setStyleSheet等等. 但是各种方法都有其注意事项,如果不注意则很容易 ...
- QT模态对话框用法(在UI文件中设置Widget背景图,这个图是一个带阴影边框的图片——酷)
QT弹出模态对话框做法: 1.新建UI文件时,一定要选择基类是QDialog的,我的选择是:Dialog without Buttons(),如下图: 2.然后在使用的时候: MyDialog dlg ...
- 报表控件NCReport教程:集成NCReport到Qt应用程序中
NCReport是一款轻量级.快速.多平台.简单易用的基于Qt toolkit的C++编写的报表解决方案,目前主要包括报表渲染库和报表设计器GUI应用程序. 但是好多使用NCReport控件的朋友都不 ...
随机推荐
- 41. wait notify 方法
wait() 等待,如果一个线程执行了wait方法,那么该线程就会进去一个以锁对象为标识符的线程池中等待 notity() 唤醒,如果一个线程执行了notity方法,那么就会唤醒以锁对象为标识符的线 ...
- JAVA去除抖音视频的水印源码!!!
@PostMapping("geturl") public DataResponse decodeDouiyin(@RequestBody DouyinRequest req ) ...
- trackback 捕获异常并打印
### 1 except Exception as e: print(traceback.format_exc()) def _handle_thread_exception(request, exc ...
- scrollReveal.js导致页面加载完之后页面中点击事件添加的css参数失效了(我的Hexo next博客引发的问题)
文章目录 时间 背景 问题解决 个人博客:https://mmmmmm.me 源码:https://github.com/dataiyangu/dataiyangu.github.io 时间 2019 ...
- JS Date Math Number
Date对象 Date对象和String对象不太一样,定义了一字符串,其实就是一个String对象,就可以直接调用属性和方法. Date对象的使用,必须使用new关键字来创建,否则,无法调用Date对 ...
- Redis学习之缓存数据类型
Redis缓存数据类型有5种,分别是String(字符串).List(列表).Hash(哈希).Set(无序,不重复集合).ZSet(sorted set:有序,不重复集合). String(字符串) ...
- ps制作浮雕和投影效果
1用文字横排工具写个hope,按住ctrl+t可以调试出文字工具,上面直接用500点来改变文字的大小.2 用矩形选框工具直接可以切割图片的大小,然后双击一个图层,添加样式为浮雕....然后合并图层3 ...
- vue多文件上传进度条 进度不更新问题
转自 hhttp://www.cnblogs.com/muge10/p/6767493.html 感谢这位兄弟的文章,之前因为这个问题 ,我连续在sgmentflow上提问过多次,完全没人能回答.谢谢 ...
- 3.4_springboot2.x整合spring Data Elasticsearch
Spring Data Elasticsearch 是spring data对elasticsearch进行的封装. 这里有两种方式操作elasticsearch: 1.使用Elasticsearch ...
- 如果json中的key需要首字母大写怎么解决?
一般我们命名都是驼峰式的,可是有时候和第三方接口打交道,也会遇到一些奇葩,比如首字母大写........额 这是个什么鬼,对方这么要求,那我们也得这么写呀. 于是乎,第一种方式:把类中的字段首字母大写 ...