Qt实现带有映射关系的进度条

1.编写继承自widget的新类,这里我们定义为colorWidget;

 

2.在colorWidget中添加私有变量QVector<QRect> m_rects,用于存放进度条的不同区间(矩形),这里为了省事,利用接口函数定义数量,

然后对widget空间作均匀划分;

 

3.重写paintEvent函数,在其中循环绘制m_rects所有矩形各自空间的颜色或其他;

 

4.重写mousePressEvent函数,判断鼠标点位置是否在对应的rect区间内,由此判定点击反馈,从而通过信号槽或者回调将具体位置传输到空间所在上层界面类中

(注:此处有一定误区,如果上层界面类中包含菜单栏或者工具栏,会影响内部坐标判定,建议去掉菜单栏和工具栏,此处应该为QT内核中某些逻辑错误)

 

 

Qt实现带有映射关系的进度条

图1:结果示例(点击绿色传出其index为3)