在旋转按钮(二)的基础上进行了大量的优化,主要是添加了三种类型的旋转按钮类型,并且可以设置旋转按钮的一切素材参数,比如,旋转整体角度、按钮大小、轨迹颜色、粗细、指针粗细、颜色、贴图等等
使用:
pSpinButton->setAccuracy(Accuracy,min,max);//范围,精度
pSpinButton->setAngle(270);//旋转范围
if(type)
{
pSpinButton->setType(1);
pSpinButton->setPenPoint(2,1,true,false,":/resource/img/point_back.png",NULL,RGB(0,0,0),RGB(204,255,102),RGB(0,0,0),RGB(204,255,102));
}
else
{
pSpinButton->setType(0);
pSpinButton->setbackground(true,true,false,":/resource/img/spinbutton_down.png",":/resource/img/spinbutton_up.png");//贴图
}
pSpinButton->setDegree(initDegreeValue);
头文件:
#ifndef MYSPINBUTTON_H
#define MYSPINBUTTON_H
#include <QWidget>
#include <complex>
#include"math.h"
#include <QDebug>
#define INTERVAL 1
class MySpinButton : public QWidget
{
Q_OBJECT
public:
void paintEvent(QPaintEvent *event);
explicit MySpinButton(QWidget *parent = nullptr);
~MySpinButton();
void setDegree(double deg);//设置值
void setInterval(int interval);
void setAccuracy(double Accuracy,double min,double max);//精度,范围
double getDegree(); //获取当前值
//画线:设置笔粗细,背景轨迹、轨迹、背景圆、指针颜色
void setPenSize(int Size,int Size_pen,QRgb mRgb1,QRgb mRgb2,QRgb mRgb3,QRgb mRgb4);
//可以旋转的角度范围
void setAngle(int end_angle);
//贴图:是否显示图片,背景、是否显示轨迹、指针背景图片地址,指针图片地址
void setbackground(bool img_show1,bool img_show2,bool img_show3,QString img_path1,QString img_path2);
//画点:轨迹粗细、指针粗细、画背景还是贴图背景、画指针还是贴图指针,背景图片地址,指针图片地址,背景轨迹颜色,轨迹颜色,背景圆颜色,指针颜色
void setPenPoint(int Size,int Size_pen,bool img_show1,bool img_show2,QString img_path1,QString img_path2,QRgb mRgb1,QRgb mRgb2,QRgb mRgb3,QRgb mRgb4);
void setType(int type);//类型
signals:
void updateDegree();
protected:
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
void mouseToPosion(QMouseEvent *event);
void wheelEvent(QWheelEvent *event);
QSize sizeHint() const;
QSize minimumSizeHint() const;
private:
double degree;//当前值
int m_interval;//间隔数
double angle;
double m_Accuracy;//精度
double m_max;
double m_min;
int m_width;//控件宽
int m_heigth;//控件高
int m_pensize;//轨迹粗徐
int m_pensize_pen;//画笔粗徐
int m_start_angle;//开始角度
int m_end_angle;//结束角度
QRgb m_Rgb[4];//画线颜色
bool m_img_show[3];//是否显示图片,背景图片、指针、是否显示轨迹颜色
QString m_img_path[2];//背景图片、指针
bool track_type[2];//画点:是否有背景图,是否有指针图片
QRgb m_Point_Rgb[4];//画点颜色
QString m_Point_img_path[2];//背景图片、指针
int m_type;//类型
};
#endif // MYSPINBUTTON_H