Qt实现带有映射关系的进度条
1.编写继承自widget的新类,这里我们定义为colorWidget;
2.在colorWidget中添加私有变量QVector<QRect> m_rects,用于存放进度条的不同区间(矩形),这里为了省事,利用接口函数定义数量,
然后对widget空间作均匀划分;
3.重写paintEvent函数,在其中循环绘制m_rects所有矩形各自空间的颜色或其他;
4.重写mousePressEvent函数,判断鼠标点位置是否在对应的rect区间内,由此判定点击反馈,从而通过信号槽或者回调将具体位置传输到空间所在上层界面类中
(注:此处有一定误区,如果上层界面类中包含菜单栏或者工具栏,会影响内部坐标判定,建议去掉菜单栏和工具栏,此处应该为QT内核中某些逻辑错误)
图1:结果示例(点击绿色传出其index为3)