Advertisement
Guest User

Untitled

a guest
Oct 27th, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //////////////////////////////////////////////////////////////////////myvideoobject.h
  2.  
  3. #ifndef MYVIDEOOBJECT_H
  4. #define MYVIDEOOBJECT_H
  5.  
  6. #include <QVideoWidget>
  7.  
  8. class QRubberBand;
  9.  
  10. class MyVideoObject : public QVideoWidget
  11. {
  12. public:
  13.     MyVideoObject(QWidget *parent = nullptr);
  14. protected:
  15.     void mouseMoveEvent(QMouseEvent *ev);
  16.     void mousePressEvent(QMouseEvent *ev);
  17.     void mouseReleaseEvent(QMouseEvent *ev);
  18.     void paintEvent(QPaintEvent *ev);
  19. private:
  20.     QRubberBand *rubberBand;
  21.     QPoint origin;
  22.     QRect rect;
  23. };
  24.  
  25. #endif // MYVIDEOOBJECT_H
  26.  
  27.  
  28.  
  29.  
  30. //////////////////////////////////////////////////////////////myvideoobject.cpp
  31.  
  32.  
  33. #include "myvideoobject.h"
  34.  
  35. #include <QMouseEvent>
  36. #include <QPainter>
  37. #include <QRubberBand>
  38.  
  39. MyVideoObject::MyVideoObject(QWidget *parent):
  40.     QVideoWidget(parent),
  41.     rubberBand(nullptr){}
  42.  
  43. void MyVideoObject::mousePressEvent(QMouseEvent *ev)
  44. {
  45.     origin = ev->pos();
  46.     if(!rubberBand)
  47.         rubberBand = new QRubberBand(QRubberBand::Rectangle, this);
  48.     rubberBand->setGeometry(QRect(origin,QSize()));
  49.     rubberBand->show();
  50.     QVideoWidget::mousePressEvent(ev);
  51. }
  52.  
  53. void MyVideoObject::mouseMoveEvent(QMouseEvent *ev)
  54. {
  55.     rubberBand->setGeometry(QRect(origin,ev->pos()).normalized());
  56.     QVideoWidget::mouseMoveEvent(ev);
  57. }
  58.  
  59. void MyVideoObject::mouseReleaseEvent(QMouseEvent *ev)
  60. {
  61.     rect = rubberBand->geometry();
  62.     update();
  63.     QVideoWidget::mouseReleaseEvent(ev);
  64. }
  65.  
  66. void MyVideoObject::paintEvent(QPaintEvent *ev)
  67. {
  68.     QVideoWidget::paintEvent(ev);
  69.     QPainter painter(this);
  70.     painter.save();
  71.     painter.setBrush(Qt::red);
  72.     if(!rect.isNull())
  73.         painter.drawRect(rect);
  74.     painter.restore();
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement