Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //////////////////////////////////////////////////////////////////////myvideoobject.h
- #ifndef MYVIDEOOBJECT_H
- #define MYVIDEOOBJECT_H
- #include <QVideoWidget>
- class QRubberBand;
- class MyVideoObject : public QVideoWidget
- {
- public:
- MyVideoObject(QWidget *parent = nullptr);
- protected:
- void mouseMoveEvent(QMouseEvent *ev);
- void mousePressEvent(QMouseEvent *ev);
- void mouseReleaseEvent(QMouseEvent *ev);
- void paintEvent(QPaintEvent *ev);
- private:
- QRubberBand *rubberBand;
- QPoint origin;
- QRect rect;
- };
- #endif // MYVIDEOOBJECT_H
- //////////////////////////////////////////////////////////////myvideoobject.cpp
- #include "myvideoobject.h"
- #include <QMouseEvent>
- #include <QPainter>
- #include <QRubberBand>
- MyVideoObject::MyVideoObject(QWidget *parent):
- QVideoWidget(parent),
- rubberBand(nullptr){}
- void MyVideoObject::mousePressEvent(QMouseEvent *ev)
- {
- origin = ev->pos();
- if(!rubberBand)
- rubberBand = new QRubberBand(QRubberBand::Rectangle, this);
- rubberBand->setGeometry(QRect(origin,QSize()));
- rubberBand->show();
- QVideoWidget::mousePressEvent(ev);
- }
- void MyVideoObject::mouseMoveEvent(QMouseEvent *ev)
- {
- rubberBand->setGeometry(QRect(origin,ev->pos()).normalized());
- QVideoWidget::mouseMoveEvent(ev);
- }
- void MyVideoObject::mouseReleaseEvent(QMouseEvent *ev)
- {
- rect = rubberBand->geometry();
- update();
- QVideoWidget::mouseReleaseEvent(ev);
- }
- void MyVideoObject::paintEvent(QPaintEvent *ev)
- {
- QVideoWidget::paintEvent(ev);
- QPainter painter(this);
- painter.save();
- painter.setBrush(Qt::red);
- if(!rect.isNull())
- painter.drawRect(rect);
- painter.restore();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement