实物图
本设计实现对程序的鼠标拖动,点击右键实现关闭应用程序,并且含有扫描余晖
部分关键代码
void Widget::paintEvent(QPaintEvent *ev)
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);// 抗锯齿
float scale = qMin(width(),height()); // 获取窗口最小值
//设置缩放比例和原点的先后顺序很重要
painter.scale(scale/m_refSize,scale/m_refSize);//缩放坐标系,使其收缩自如
painter.translate(m_refSize/2,m_refSize/2); //定义坐标原点
drawFrame(painter);
drawDivding(painter);
drawNumberIndicator(painter);
drawIndicator(painter);
drawNumberSpeed(painter);
m_wgt_mileage->setGeometry((width() - m_wgt_mileage->width()) / 2 + 30,
height() - m_wgt_mileage->height() - 60,m_wgt_mileage->width(),
m_wgt_mileage->height());
}
//绘制边框
void Widget::drawFrame(QPainter &p)
{
p.save();//保存当前的画家状态(将状态推入堆栈)。save()后面必须跟着相应的restore();函数的作用是:释放堆栈。
p.setPen(Qt::NoPen);
QLinearGradient lg1(-m_radius,-m_radius,m_radius,m_radius);//渐变区域
lg1.setColorAt(