QT 按钮上的数字气泡

  • Post author:
  • Post category:其他

效果如图所示图

原理如下:

继承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();

}

 


版权声明:本文为witlym311原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。