對監控區域組配置生效時間,如下圖所示,以半小時的粒度設置 主要思路: 畫橫線豎線畫出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 }