简单的按钮开关实现
自定义类派生于QWidget-在上面画2个圆形和一个矩形,合成一个开关样式,再让其中一个圆形填充不一样的颜色就好了。
switchbutton.h
#ifndef SWITCHBUTTON_H
#define SWITCHBUTTON_H
#include <QWidget>
#include <QEvent>
#include <QPaintEvent>
#include <QPainter>
#include <QMouseEvent>
class SwitchButton : public QWidget
{
Q_OBJECT
public:
explicit SwitchButton(QWidget *parent = 0);
signals:
void isChecked(bool check);
public slots:
protected:
void paintEvent(QPaintEvent *);
void mouseReleaseEvent(QMouseEvent *);
private:
bool hasChecked;
};
#endif // SWITCHBUTTON_H
switchbutton.cpp
#include "switchbutton.h"
SwitchButton::SwitchButton(QWidget *parent) : QWidget(parent),hasChecked(false)
{
this->setFixedSize(60,30);
}
void SwitchButton::paintEvent(QPaintEvent *)
{
if(!hasChecked)
{
QPainter painter(this);
painter.setPen(Qt::white);
painter.setBrush(Qt::white);
painter.drawEllipse(30,0,30,30);
painter.drawRect(15,0,30,30);
painter.setBrush(Qt::blue);
painter.drawEllipse(0,0,30,30);
}
else
{
QPainter painter(this);
painter.setPen(Qt::white);
painter.setBrush(Qt::white);
painter.drawEllipse(0,0,30,30);
painter.drawRect(15,0,30,30);
painter.setBrush(Qt::blue);
painter.drawEllipse(30,0,30,30);
}
}
void SwitchButton::mouseReleaseEvent(QMo