Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "buttonclickeffect.h"
- ButtonClickEffect::ButtonClickEffect(QObject *parent) : QObject(parent)
- {
- timer = new QTimer(this);
- QObject::connect(timer, SIGNAL(timeout()), this, SLOT(OnTick()));
- }
- bool ButtonClickEffect::eventFilter(QObject *object, QEvent *event)
- {
- QWidget *widget = (QWidget *)object;
- if(event->type() == QEvent::MouseButtonPress)
- {
- QMouseEvent *mouseEvent = (QMouseEvent *)event;
- if(mouseEvent->button() == Qt::LeftButton)
- {
- delta = 0.0f;
- timer->start(10);
- return true;
- }
- }
- else if(event->type() == QEvent::Paint)
- {
- if(delta == -1.0f)
- {
- return false;
- }
- QPainter painter(widget);
- if(delta == 0.0f)
- {
- delta = -1.0f;
- painter.eraseRect(widget->geometry());
- }
- else
- {
- painter.fillRect(widget->geometry(), QColor(200, 200, 200, 200 * (delta < 1.0f ? delta : 2.0f - delta)));
- }
- return true;
- }
- return false;
- }
- void ButtonClickEffect::OnTick()
- {
- delta += 0.1f;
- if(delta > 2.0f)
- {
- delta = 0.0f;
- timer->stop();
- }
- QWidget *w = (QWidget *)parent();
- w->update();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement