对监控区域组配置生效时间,如下图所示,以半小时的粒度设置
主要思路:
画横线竖线画出7*48个小方格,填充颜色时以小方格是矩形为单位进行填充
用bool isActive[7][48];代表每个小方格的状态
每次鼠标单击到某个方格,就取反对应的isActive,然后触发重绘
重绘时按照sActive是否为true判断是否对小方格的区域填充颜色
判断鼠标单击位置位于哪个小方格,只需将坐标去除边界后,除以小方格的大小,即是第几个小方格的下标:
1 void HourWidget::mouseReleaseEvent(QMouseEvent *e){ 2 if(e->button() == Qt::LeftButton){ 3 QPoint p = e->pos(); 4 int x = p.x(); 5 int y = p.y(); 6 x-=xStart; 7 y-=yStart; 8 if(x<0 || y<0 || x>=48*w || y>=7*h){ 9 e->ignore(); 10 return; 11 } 12 int j = x/w; 13 int i = y/h; 14 isActive[i][j] = !isActive[i][j]; 15 update(); 16 } 17 e->ignore(); 18 }