欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

监控组选择生效时间的窗口

程序员文章站 2022-07-10 23:14:38
对监控区域组配置生效时间,如下图所示,以半小时的粒度设置 主要思路: 画横线竖线画出7*48个小方格,填充颜色时以小方格是矩形为单位进行填充 用bool isActive[7][48];代表每个小方格的状态 每次鼠标单击到某个方格,就取反对应的isActive,然后触发重绘 重绘时按照sActive ......

对监控区域组配置生效时间,如下图所示,以半小时的粒度设置

监控组选择生效时间的窗口

主要思路:

画横线竖线画出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 }