QT 按钮上的数字气泡

效果如图所示图

原理如下:

继承QPushButton类,然后重绘按钮,按钮大小

注意着色面积与原面积的大小关系,还有小圆圈位置。

哦啦,恭喜你,你也会了!

 

源码如下:

//BubblelTipButton.h

class BubblelTipButton :  public QPushButton
{
public:
    BubblelTipButton(QWidget *parent);
    virtual ~BubblelTipButton(void);

    virtual void paintEvent(QPaintEvent * event);
};

//BubblelTipButton.cpp

BubblelTipButton::BubblelTipButton(QWidget *parent)
    : QPushButton(parent)
{
}


BubblelTipButton::~BubblelTipButton(void)
{
}
#define LABEL_WIDTH 20
#define BORDER_WIDTH 5
void BubblelTipButton::paintEvent(QPaintEvent * event)
{
    QPainter painter(this);
    QRect rt = rect();
    QRect rt1 = QRect(rt.right()-LABEL_WIDTH, rt.top(), LABEL_WIDTH, LABEL_WIDTH);
    QRect rt2 = QRect(rt.left()+BORDER_WIDTH, rt.top()+BORDER_WIDTH,
        rt.width()-2*BORDER_WIDTH, rt.height()-2*BORDER_WIDTH);
    painter.fillRect(rt2, Qt::green);
   
    painter.setPen(Qt::red);
    painter.setBrush(QBrush(Qt::red));
    painter.drawEllipse(rt1);

    painter.setPen(Qt::blue);
    painter.drawText(rt1, Qt::AlignCenter, "99");
    painter.drawText(rt, Qt::AlignCenter, text());
}

///

有童鞋竟然问我怎么用

1、用qt设计师把按钮拖到QWidget中,然后把QPushButton提升成BubblelTipButton,即可。

 

2、用下面的代码

//main.cpp

#include <QtWidgets/QApplication>

#include "BubblelTipButton.h"

int main(int argc, char *argv[])

{

    QApplication a(argc, argv);

   QWidget w;
    w.setFixedSize(600, 400);
    BubblelTipButton  * pBtn = new BubblelTipButton(&w);
    pBtn->setFixedSize(100, 50);
    pBtn->setText(QStringLiteral("渡渡"));
    w.show();
    return a.exec();

}

 

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值