这次所做的项目中需要用到如下功能,点击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中设置一些调色板的更多相关文章

  1. Qt应用程序中设置字体

    Qt应用程序中设置字体 应用程序中经常需要设置字体,例如office软件或者是其他的编辑器软件等等.这里主要涉及到如下几个概念:字体,字号以及风格(例如:粗体,斜体,下划线等等).Qt里面也有对应的类 ...

  2. Qt设计器中设置border-image注意问题

    Qt版本4.8.5,Windows7操作系统,在Qt设计师中通过样式表设计设置widget的border-image属性,debug版本编译会正常显示,但是release版本编译运行就不显示,把图片格 ...

  3. Qt532.【转】Qt在pro中设置运行时库MT、MTd、MD、MDd,只适合VS版本的Qt

    ZC:具体应该设置 什么参数,可以参看 自己转载的文章:"VC.[转]采用_beginthread__beginthreadex函数创建多线程 - CppSkill - 博客园.html&q ...

  4. 【转】Qt在pro中设置运行时库MT、MTd、MD、MDd,只适合VS版本的Qt

    http://blog.csdn.net/caoshangpa/article/details/51416077 一.在pro中设置运行时库 最近在用Qt5.6.0(VS2013版本)调用一份用Vis ...

  5. Qt与PyQT中设置ToolBar在AllowedArea的显示

    因为个人对传统的软件GUI界面不是太喜欢,最近又在学习Qt和PyQt5,所以就有了设置ToolBar在窗口的不同地方的想法,经过浪里淘沙,最终在Qt官网里找到了,原来再添加toolBar的时候是由设置 ...

  6. PyQt(Python+Qt)学习随笔:Qt Designer中部件的调色板palette属性和字体font属性设置

    一.调色板 在Qt Designer的部件属性中,有个部件调色板(palette)的属性,进入后,如下图所示: 1.调色板palette Qt中提供的调色板palette用于管理控件的外观显示,对应P ...

  7. Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())

    在Qt中设置widget背景颜色或者图片方法很多种:重写paintEvent() , 调色板QPalette , 样式表setStyleSheet等等. 但是各种方法都有其注意事项,如果不注意则很容易 ...

  8. QT模态对话框用法(在UI文件中设置Widget背景图,这个图是一个带阴影边框的图片——酷)

    QT弹出模态对话框做法: 1.新建UI文件时,一定要选择基类是QDialog的,我的选择是:Dialog without Buttons(),如下图: 2.然后在使用的时候: MyDialog dlg ...

  9. 报表控件NCReport教程:集成NCReport到Qt应用程序中

    NCReport是一款轻量级.快速.多平台.简单易用的基于Qt toolkit的C++编写的报表解决方案,目前主要包括报表渲染库和报表设计器GUI应用程序. 但是好多使用NCReport控件的朋友都不 ...

随机推荐

  1. 移动端布局 + iscroll.js

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...

  2. 通过statCounter计算给定的RDD[Double]的统计信息的方法

    需求1:给定一个RDD[Double],进行计算,该RDD的统计信息(count,mean,stdev,max,min) 代码: def main(args: Array[String]): Unit ...

  3. struts-config.xml

    <struts-config>是struts的根元素,它主要有8个子元素,DTD定义如下: <!ELEMENT struts-config (data-sources?,form-b ...

  4. 46 python学习笔记

    0 引言 之前用python跑过深度学习的代码,用过一段时间的jupiter和tensorflow:最近在Ubuntu下搭建起了VSCode + Anaconda的python开发环境,感觉很好用,尤 ...

  5. Delphi 与SQL编程

    Delphi 与SQL编程 SQL语言作为关系数据库管理系统中的一种通用的结构查询语言, 已经被众多的数据库管理系统所采用,如Oracle.Sybase.Informix等数据库管理系统,它们都支持S ...

  6. BZOJ 1697: [Usaco2007 Feb]Cow Sorting牛排序(置换+贪心)

    题面 Description 农夫JOHN准备把他的 N(1 <= N <= 10,000)头牛排队以便于行动.因为脾气大的牛有可能会捣乱,JOHN想把牛按脾气的大小排序.每一头牛的脾气都 ...

  7. NX二次开发-UFUN多按钮模态对话框UF_UI_message_dialog

    NX11+VS2013 #include <uf.h> #include <uf_ui.h> UF_initialize(); //多按钮模态对话框 ; char title_ ...

  8. NX二次开发-UFUN求两个对象最短距离UF_MODL_ask_minimum_dist

    NX9+VS2012 #include <uf.h> #include <uf_modl.h> #include <uf_ui.h> UF_initialize() ...

  9. Day 13 : 函数递归,

    从前有有座山,山里有座庙,庙里有个老和尚给小和尚们讲故事,讲的什么呀,讲的是,从前有有座山,山里有座庙,庙里有个老和尚给小和尚们讲故事,讲的什么呀?讲的是?...... 递归:1.一个函数再内部调用了 ...

  10. 逻辑回归,多分类推广算法softmax回归中

    转自http://ufldl.stanford.edu/wiki/index.php/Softmax%E5%9B%9E%E5%BD%92 简介 在本节中,我们介绍Softmax回归模型,该模型是log ...