Advertisement
Guest User

plot

a guest
Jun 2nd, 2022
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.11 KB | None | 0 0
  1. //Функция рисования точек
  2. void OscilloscopeWidget::paintEvent(QPaintEvent *event)
  3. {
  4.     QPainter painter(this);
  5.     painter.setRenderHint(QPainter::Antialiasing);
  6.     QPen pen;
  7.     pen.setWidth(1);
  8.     pen.setColor(QColor(0,0,255));
  9.     painter.setPen(pen);
  10.     painter.save();
  11.     for(int i = 1; i < qVectorQPointF.size(); i++)
  12.     {
  13.         QPointF pointOne = qVectorQPointF[i-1];
  14.         QPointF pointTwo = qVectorQPointF[i];
  15.         pointOne.setX(pointOne.x()*scaleX + offSetX + moveValueX);
  16.         pointOne.setY((pointOne.y()*scaleY) + offSetY + moveValueY);
  17.         pointTwo.setX(pointTwo.x()*scaleX + offSetX + moveValueX);
  18.         pointTwo.setY((pointTwo.y()*scaleY) + offSetY + moveValueY);
  19.  
  20.         painter.drawLine(pointOne, pointTwo);
  21.     }
  22.     painter.drawRect(this->rect());
  23.     painter.restore();
  24. }
  25.  
  26. //Функция обработки нажатия левой кнопки мыши
  27. void OscilloscopeWidget::mousePressEvent(QMouseEvent *event)
  28. {
  29.     if(event->button() & Qt::LeftButton)
  30.     {
  31.         mousePressed = true;
  32.         prevMousePos = event->pos();
  33.         moveValueX = 0;
  34.         moveValueY = 0;
  35.     }
  36. }
  37.  
  38. //Функция обработки отпускания левой кнопки мыши
  39. void OscilloscopeWidget::mouseReleaseEvent(QMouseEvent *event)
  40. {
  41.     if(event->button() & Qt::LeftButton)
  42.     {
  43.         mousePressed = false;
  44.         offSetX += moveValueX;
  45.         offSetY += moveValueY;
  46.         moveValueX = 0;
  47.         moveValueY = 0;
  48.     }
  49. }
  50.  
  51. //Функция движения мыши с жатой левой кнопкой
  52. void OscilloscopeWidget::mouseMoveEvent(QMouseEvent *event)
  53. {
  54.     if(mousePressed == true)
  55.     {
  56.         QPointF newPos = event->pos() - prevMousePos;
  57.         moveValueX = newPos.x();
  58.         moveValueY = newPos.y();
  59.         update();
  60.     }
  61. }
  62.  
  63. //Функция кручения колесика
  64. void OscilloscopeWidget::wheelEvent(QWheelEvent *event)
  65. {
  66.     float count = float(event->angleDelta().y()/120);
  67.  
  68.     scaleX += count/10;
  69.     if(scaleX < 0)
  70.     {
  71.         scaleX = 0;
  72.     }
  73.  
  74.     scaleY += count/1000;
  75.     if(scaleY < 0)
  76.     {
  77.         scaleY = 0;
  78.     }
  79.  
  80.     offSetX += event->position().x() - event->position().x()*scaleX;
  81.     offSetY += event->position().y() - event->position().y()*scaleY;
  82.  
  83.     update();
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement