继承 了解思想 C++

来源:互联网 发布:sas软件多少钱 编辑:程序博客网 时间:2024/05/22 09:46
#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_OBJECTpublic:    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));}

完毕

学无止尽  只能学个思想先  后续看需要学习


0 0