qt_udp_brocast_test/udp_brocast/src/utilities/circlebutton.cpp
2020-03-28 21:05:29 +08:00

115 lines
2.8 KiB
C++

#include "circlebutton.h"
/*
**************************************************************
1. @ProjName: graphics_test
2. @Author: impressionyang
3. @Date: 2020-01-03
4. @Brief: File Description
**************************************************************
*/
CircleButton::CircleButton(QWidget *parent) : QWidget(parent) {
setFixedSize(2 * radius + 4, 2 * radius + 4);
//
this->radius = 100;
this->front_color = QColor(70, 184, 255);
this->back_color = QColor(255, 255, 255);
this->hover_color = QColor(71, 95, 255);
this->click_color = QColor(2, 2, 171);
this->text = QString("BUTTON");
color_now = front_color;
this->pen = new QPen();
this->painter = new QPainter();
update();
}
CircleButton::CircleButton(int radius, QString text, QWidget *parent)
: QWidget((parent)) {
setFixedSize(2 * radius + 4, 2 * radius + 4);
this->radius = radius;
this->front_color = QColor(70, 184, 255);
this->back_color = QColor(255, 255, 255);
this->hover_color = QColor(71, 95, 255);
this->click_color = QColor(2, 2, 171);
this->text = text;
color_now = front_color;
this->pen = new QPen();
this->painter = new QPainter();
update();
}
void CircleButton::setColor(QColor front, QColor back, QColor hover,
QColor press) {
this->front_color = front;
this->back_color = back;
this->hover_color = hover;
color_now = front;
click_color = press;
update();
}
void CircleButton::setText(QString text) {
this->text = text;
update();
}
void CircleButton::setRadius(int radius) {
this->radius = radius;
update();
}
void CircleButton::mousePressEvent(QMouseEvent *event) {
emit clicked();
this->color_now = click_color;
update();
}
void CircleButton::mouseReleaseEvent(QMouseEvent *event) {
this->color_now = hover_color;
update();
}
void CircleButton::enterEvent(QEvent *event) {
this->color_now = hover_color;
update();
}
void CircleButton::leaveEvent(QEvent *event) {
this->color_now = front_color;
update();
}
void CircleButton::paintEvent(QPaintEvent *event) {
//开始绘制
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
QPen pen(color_now);
painter.setPen(pen);
QBrush brush(color_now, Qt::SolidPattern);
painter.setBrush(brush);
// drwaw ract
QRect rectf(1, 1, 2 * radius + 1, 2 * radius + 1);
int startangle = 0 * 16;
int endangle = 120 * 16;
// painter.drawPie(rectf, startangle, endangle);
painter.drawEllipse(rectf);
// text
QFont f = QFont("Noto", (2 * radius) / 7, QFont::Bold);
painter.setFont(f);
painter.setFont(f);
pen.setColor(back_color);
painter.setPen(pen);
painter.drawText(0, (2 * radius) / 2 - (2 * radius) / 12, (2 * radius),
(2 * radius) / 6, Qt::AlignCenter, text);
}
//