void CKMMain_Set_System_Page::paintEvent(QPaintEvent *)
{
QPainter p(this);
p.setRenderHint(QPainter::Antialiasing);
double percent = (iremain * 1.0f) / itotal;
int m_rotateAngle = 360*iremain/itotal;
int side = qMin(width(), height())-200;
int xpos=550;
int ypos=20;
QRectF outRect(xpos, ypos, side, side);
QRectF inRect(20, 20, side-40, side-40);
QString valueStr = QString("%1%").arg(QString::number(percent*100,10,1));
//画外圆
p.setPen(Qt::NoPen);
p.setBrush(QBrush(QColor(255, 255, 255)));
p.drawEllipse(outRect);
//画内圆
QRectF noutRect(xpos, ypos, side, side);//矩形长宽为窗口的长宽
p.setBrush(QBrush(QColor(0, 255, 127)));
p.drawPie(noutRect, (90-m_rotateAngle)*16, m_rotateAngle*16);
QRectF newinRect(xpos+15, ypos+15, side-30, side-30);
//画遮罩,遮罩颜色为窗口颜色
p.setBrush(palette().window().color());
p.drawEllipse(newinRect);
//画文字
QFont f;// = QFont("Microsoft YaHei", 25, QFont::Bold);
f.setBold(true);
f.setPointSize(APP_FONT_SIZE_THIRD);
p.setFont(f);
p.setPen(QColor("#555555"));
QRectF TRect(xpos+15, ypos-20, side-40, side-40);
p.drawText(TRect, Qt::AlignCenter, valueStr);
QFont funder;// = QFont("Microsoft YaHei", 13, QFont::Bold);
funder.setBold(true);
funder.setPointSize(APP_FONT_SIZE_LITTLE);
p.setFont(funder);
p.setPen(QColor("#555555"));
QRectF TURect(xpos+25, ypos+30, side-40, side-40);
p.drawText(TURect, Qt::AlignCenter, QString("%1M").arg(iremain) + "/" + QString("%1M").arg(itotal));
}
Qt 画圆形进度条 工作例子
最新推荐文章于 2025-03-06 19:29:40 发布