#ifndef MYBUTTON_H
#define MYBUTTON_H
#include <<span style="font-family: Arial, Helvetica, sans-serif;">QPushButton</span><span style="font-family: Arial, Helvetica, sans-serif;">></span>
class MyButton : public QPushButton
{
Q_OBJECT
public:
explicit MyButton(QWidget *parent = 0);
MyButton(const QString& text, QWidget* parent = 0);
QRect _rect;
QString _text;
bool _pressed;
void mousePressEvent(QMouseEvent *);
void mouseReleaseEvent(QMouseEvent *);
void paintEvent(QPaintEvent *);
signals:
void clicked();
public slots:
};
#endif // MYBUTTON_H
#include "MyButton.h"
#include <QPainter>
#include <QMouseEvent>
MyButton::MyButton(QWidget *parent) :
QWidget(parent), _rect(0, 0, size().widht, size().height), _text(QString())
{
_pressed = false;
}
MyButton::MyButton(const QString &text, QWidget *parent):
QWidget(parent), _text(text), _rect(0, 0, 100, 30)
{
_pressed = false;
this->setGeometry(_rect);
}
void MyButton::mousePressEvent(QMouseEvent *)
{
_pressed = true;
update();
}
void MyButton::mouseReleaseEvent(QMouseEvent *ev)
{
_pressed = false;
update();
if(_rect.contains(ev->pos()))
emit clicked();
// callback handler
}
void MyButton::paintEvent(QPaintEvent *)
{
QPainter p(this);
if(_pressed)
p.setBrush(Qt::yellow);
else
p.setBrush(Qt::darkGray);
p.drawRect(_rect);
p.drawText(_rect, _text, QTextOption(Qt::AlignCenter));
}
完毕
学无止尽 只能学个思想先 后续看需要学习