Qt 自定义按钮

本文介绍了如何在Qt中自定义按钮,通过继承QPushButton并重写paintEvent方法,实现按钮的三种状态:正常、选中和不可点击。关键步骤包括绘制按钮外框、图标、文字背景和文字。
摘要由CSDN通过智能技术生成

Qt 自定义按钮

效果图如下,每个分别有三种状态;第一个按钮正常状态;第二个为选中状态;第三个不可点击状态
在这里插入图片描述

思路:新建一个按钮类继承QPushButton,重写paintEvent方法,根据原型画出相应效果;由上图可以把按钮分为四个部分(整体外框、icon、文字背景、文字)
核心代码:

void CButton::paintEvent(QPaintEvent *)
{
   
    QPainter painter(this);
    painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
    paintBackground(&painter);
    paintIcon(&painter);
    paintTextBackground(&painter);
    paintText(&painter);
}

第一步:画整个按钮外框

void CButton::paintBackground(QPainter * painter)
{
   
	painter->save();
    QPainterPath path;
    QBrush brush;
    brush.setStyle(Qt::NoBrush);
    QPen pen;
    pen.setStyle(Qt::SolidLine);
    pen.setWidth(m_BorderWidth);
    //整体外框也分别会有三种状态
    if (isChecked())
    {
   
        brush.setColor(m_CheckedBackgroundColor);
        pen.setColor(m_CheckedBorderColor);
    }
    else if(!isEnabled())
    {
   
        brush.setColor(m_DisabledBackgroundColor);
        pen.setColor(m_DisableBorderColor);
    }
    else
    {
   
        brush.setColor(m_NormalBackgroundColor);
        pen.setColor(m_NormalBorderColor);
    }
    painter->setBrush(brush);
    QRect rect = QRect(0,0,this
  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值