• 大小: 1.29M
    文件类型: .gz
    金币: 1
    下载: 0 次
    发布日期: 2023-08-29
  • 语言: 其他
  • 标签: 其他  

资源简介

SmartHomeV2.tar.gz

资源截图

代码片段和文件信息

#include “mytbn.h“
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

extern int TOOLWIDGET_W;
extern int TOOLWIDGET_H;
extern int TOOLICON_WH;

MyTbn::MyTbn(const QString &strImage const QString &strInfo QWidget *parent) :
    QToolButton(parent)m_bOver(false)m_bPress(false)m_strImage(strImage)m_strInfo(strInfo)
{
    //文本颜色
    QPalette objPalette = palette();
    objPalette.setColor(QPalette::ButtonText QColor(220220220));
    setPalette(objPalette);
    //文本粗体
    QFont &objFont = const_cast(font());
    objFont.setWeight(QFont::Bold);
    //样式
    setstyleSheet(QLatin1String(“QToolButton{border:0px;}“));
    //大小
    setIconSize(QSize(3535));
    resize(3636);
    //设置文本在图标下边
    setToolButtonstyle(Qt::ToolButtonTextUnderIcon);
    //设置图像文本
    setIcon(QPixmap(strImage));
    setText(strInfo);
    //连接press信号槽,表示按钮按下时
    connect(thisSIGNAL(pressed())thisSLOT(slot_pressed()));
}

MyTbn::MyTbn(QWidget *parent)

{
}

MyTbn::~MyTbn()
{
}

void MyTbn::setPicName(QString pic_name)
{
    this->pic_name = pic_name;
    setFixedSize(QPixmap(pic_name).size());
}

void MyTbn::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    //如果按钮被按下
    if(m_bPress)
    {
        //绘制被按下时的效果
        painterinfo(30200&painter);
    }
    else if(m_bOver)//如果按钮没有被按下并且鼠标移到按钮上
    {
        //绘制鼠标移到按钮上的按钮效果
        painterinfo(40100&painter);
    }
    //调用基类的重绘事件以显示图像文本等
    QToolButton::paintEvent(event);
}

void MyTbn::enterEvent(QEvent *event)
{
    SetOver(true);
}

void MyTbn::leaveEvent(QEvent *event)
{
    SetOver(false);
}

void MyTbn::SetPress(bool bEnable)
{
    if (bEnable!= m_bPress)
    {
        //设置m_bOver标志位
        m_bPress = bEnable;
        //更新
        update();
    }
}

void MyTbn::painterinfo(int nTopPartOpacity int nBottomPartOpacity QPainter *pPainter)
{
    //设置画笔
    QPen objPen(Qt::NoBrush1);
    pPainter->setPen(objPen);
    //设置渐变画刷
    QLinearGradient objLinear(rect().topLeft()rect().bottomLeft());
    //顶部颜色和透明度
    objLinear.setColorAt(0QColor(150150150nTopPartOpacity));
    //中间颜色和透明度---白色--透明度%50
    objLinear.setColorAt(0.5QColor(25525525550));
    //底部颜色和透明度
    objLinear.setColorAt(1QColor(255255255nBottomPartOpacity));
    QBrush objBrush(objLinear);
    pPainter->setBrush(objBrush);
    //画圆角矩形
    pPainter->drawRoundedRect(rect()55);
}

void MyTbn::slot_pressed()
{
    SetPress(true);
    emit signal_parent(this);
}

void MyTbn::SetOver(bool bEnable)
{
    if (bEnable != m_bOver)
    {
        //设置m_bOver标志位
        m_bOver = bEnable;
        //更新
        update();
    }
}

评论

共有 条评论