瞎扯
转眼已经折腾Qt(画图软件23333)快5个月了,C++的东西没学到多少,各种软件绘图技巧倒是折腾了不少。在刚开始工作的时候看到设计稿的软件界面还是一脸懵逼的,现在发现没有什么是Qt的paint()和PS解决不了的,如果有,再加个Ae~ o( ̄▽ ̄)ブ
另外,现在CSDN真恶心,还清除以前的积分ε=( o`ω′)ノ
简介
在需要按比例显示数据的时候,进度条是必不可少的。Qt中有一个进度条相关的类QProgressBar,这个类提供了简单的水平或垂直的进度条,可以通过修改qss简单的改变下样式:
简单使用的话自带的样式就够看了,但是也有时候设计非要搞些酷炫的效果,没办法只能折腾下了……比如,设计稿非要整个两端椭圆的进度条,qss就没辙了。这篇文章主要总结下Qt在绘制控件方面的经验,画都能画出来了,其他骚操作就随便搞了,下面是折腾出来的栗子:
各种进度条
重绘paint之两端圆角进度条(继承QProgressbar)
图中第一个,其实也可以直接继承QWidget的,就少写个设置百分比和最小最大值的函数,主要还是重写paint函数,画出进度条底图和根据当前value值画出蓝色进度条:
void RadiusProgressBar::paintEvent(QPaintEvent *)
{
QPainter p(this);
QRect rect = QRect(0, 0, width(), height()/2);
QRect textRect = QRect(0, height()/2, width(), height()/2);
const double k = (double)(value() - minimum()) / (maximum()-minimum());
int x = (int)(rect.width() * k);
QRect fillRect = rect.adjusted(0, 0, x-rect.width(), 0);
QString valueStr = QString("%1%").arg(QString::number(value()));
QPixmap buttomMap = QPixmap(