Qt 制作一个音量回馈样式的进度条效果

使用 Qt 默认的进度条样式是传统的效果,但是 Qt 提供了强大的 QSS 引擎,提供我们去设置丰富的控件样式,这次是为了模仿一个音量或者声音回馈效果的进度条样式,类似下面这张图片的效果:

其中可以看到麦克风和扬声器右侧都有一个点状分割的进度效果,来显示麦克风或者扬声器的回馈声音是多大的。开始为了制作这种效果费尽心思想通过渐变来实现,但后面还是放弃了。最终是给 QProgressBar 设置了一个前景图和一个背景图的方法,实现了这种效果。

/* Progress styles */
QProgressBar {
    border: 0;
    background-image: url(:/images/public/progress/progress_background.png);
}

QProgressBar::chunk:enabled {
    background-image: url(:/images/public/progress/progress_foreground.png);
}

其中前景图和背景图分别如下效果,QSS 会自动以 repeat 方式显示图片。

发表评论