您的位置:首页 > 编程语言 > C语言/C++

继承 了解思想 C++

2016-06-27 13:00 267 查看
#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));
}

完毕

学无止尽  只能学个思想先  后续看需要学习
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: