可选取颜色的按钮封装

头文件:

#pragma once

#include <QObject>
#include <QPushButton>
#include <QColorDialog>
#include <QColor>
#include <QDebug>
class MyQPushButton : public QPushButton
{
    Q_OBJECT
public:
    MyQPushButton(QWidget *parent);
    ~MyQPushButton();
    void setColor();//设置随机颜色
    void setColor(QColor color);//设置特定颜色
    QColor getColor() const;//获取颜色
private slots:
    void choiceColor(void);
};

源文件:

#include "MyQPushButton.h"

MyQPushButton::MyQPushButton(QWidget *parent)
: QPushButton(parent)
{
    connect(this, SIGNAL(clicked()), this, SLOT(choiceColor(void)));
    setAutoFillBackground(true);
    setFlat(true);

}

MyQPushButton::~MyQPushButton()
{

}

void MyQPushButton::choiceColor(void)
{
    QColor color = QColorDialog::getColor(Qt::white, this);
    if (!color.isValid())
    {
        return;
    }
    QPalette pal;
    pal.setColor(QPalette::Button, color);
}

/*****************************************************************/
//作者:朱小勇
//函数名称:设置随机颜色
//函数参数:NULL
//函数返回值:NULL
//函数作用:NULL
//备注:NULL
/*****************************************************************/
void MyQPushButton::setColor()
{
    QColor color(rand() % 256, rand() % 256, rand() % 256);//way2
    QPalette pal;
    pal.setColor(QPalette::Button, color);
    setPalette(pal);
}

/*****************************************************************/
//作者:朱小勇
//函数名称:设置指定颜色
//函数参数:NULL
//函数返回值:NULL
//函数作用:NULL
//备注:NULL
/*****************************************************************/
void MyQPushButton::setColor(QColor color)
{
    QPalette pal;
    pal.setColor(QPalette::Button, color);
    setPalette(pal);
}

/*****************************************************************/
//作者:朱小勇
//函数名称:获取颜色
//函数参数:NULL
//函数返回值:NULL
//函数作用:NULL
//备注:NULL
/*****************************************************************/
QColor MyQPushButton::getColor() const
{
    return this->palette().color(QPalette::Button);
}

 

posted @ 2018-09-05 16:01  朱小勇  阅读(433)  评论(0编辑  收藏  举报