void QVUMeter::paintValue() { QPainter painter(this); painter.setWindow(0, 0, 100, 540); painter.setRenderHint(QPainter::Antialiasing); painter.setBrush(Qt::black); painter.drawRect(20, 15, 25, 25); painter.drawRect(55, 15, 25, 25); painter.setPen(Qt::gray); painter.drawLine(20, 40, 45, 40); painter.drawLine(45, 15, 45, 40); painter.drawLine(55, 40, 80, 40); painter.drawLine(80, 15, 80, 40); painter.setPen(QPen(colValue, 1)); QFont valFont("Arial", dimVal, QFont::Bold); painter.setFont(valFont); QRectF leftR(20, 15, 25, 25); QString lVal = QString("%1").arg(leftVal, 0,'f', 0); painter.drawText(leftR, Qt::AlignCenter, lVal); QRectF rightR(55, 15, 25, 25); QString rVal = QString("%1").arg(rightVal, 0,'f', 0); painter.drawText(rightR, Qt::AlignCenter, rVal); emit valueLChanged(leftVal); emit valueRChanged(rightVal); }
void VUMeter::drawValue(QPainter *painter) { painter->save(); //绘制左右音量值背景 painter->setBrush(Qt::black); painter->drawRect(20, 15, 25, 25); painter->drawRect(55, 15, 25, 25); //绘制左右音量值背景右侧突出线条,形成立体感 painter->setPen(Qt::gray); painter->drawLine(20, 40, 45, 40); painter->drawLine(45, 15, 45, 40); painter->drawLine(55, 40, 80, 40); painter->drawLine(80, 15, 80, 40); //设置音量值字体 painter->setPen(QPen(colorValue, 1)); QFont valFont("Arial", 12, QFont::Bold); painter->setFont(valFont); //绘制左音量值 QRectF leftR(20, 15, 25, 25); QString lVal = QString("%1").arg(leftValue, 0, 'f', 0); painter->drawText(leftR, Qt::AlignCenter, lVal); //绘制右音量值 QRectF rightR(55, 15, 25, 25); QString rVal = QString("%1").arg(rightValue, 0, 'f', 0); painter->drawText(rightR, Qt::AlignCenter, rVal); painter->restore(); //发送音量值改变信号 emit valueLChanged(leftValue); emit valueRChanged(rightValue); }