Qt 实现图片在前的进度条
使用继承QProgressBar重写paintEvent的形式实现
创建一个继承QProgressBar类为MyProgressBar,在类中重载paintEvent事件
实现效果
如果需要去掉边框可以使用以下命令:
this->setWindowFlags(Qt::FramelessWindowHint);
代码实现
class ProcessBar : public QProgressBar
{
public:
ProcessBar(QWidget *parent =NULL);
~ProcessBar();
public:
void paintEvent(QPaintEvent *event);
};
// 重载paintEvent
void ProcessBar::paintEvent(QPaintEvent *event)
{
QProgressBar::paintEvent(event);
QPainter painter(this);
int width = this->width();
int height = this->height();
// 计算当前值占据的比例
double ratio = ((double)(this->value() - this->minimum()) / (double)(this->maximum() - this->minimum()));
QPixmap pixmap("Path/pix.jpg");
int pixwidth = width * ratio;
painter.drawPixmap(pixwidth - pixmap.width(),height-pixmap.height(),pixmap);