QT实时视频播放界面设计
来源:互联网 发布:吉他弹唱 知乎 编辑:程序博客网 时间:2024/05/01 12:36
QT播放界面设计
今天写了个QT的实时视频播放界面,其实要写一个播放界面非常容易,以下为代码
首先定义一个用于播放的控件:
* PlsyItem.h
#ifndef PLAYITEM_H#define PLAYITEM_H#include <QObject>#include <QGraphicsItem>#include <QImage>class PlayItem : public QObject, public QGraphicsPixmapItem{ Q_OBJECTpublic: explicit PlayItem(QObject *parent = nullptr); PlayItem(const QImage &qimg); ~PlayItem(); void setQImage(const QImage &qimg);};#endif // PLAYITEM_H
- PlsyItem.cpp
#include "PlayItem.h"PlayItem::PlayItem(QObject *parent) : QObject(parent){}PlayItem::PlayItem(const QImage &qimg){ this->setPixmap(QPixmap::fromImage(qimg)); this->update();}PlayItem::~PlayItem(){}void PlayItem::setQImage(const QImage &qimg){ this->setPixmap(QPixmap::fromImage(qimg)); this->update();}
然后定义一个 QGraphicsView,用于显示
* PlayWidget.h
#ifndef PLAYWIDGET_H#define PLAYWIDGET_H#include <QGraphicsView>#include <QGraphicsScene>#include <opencv2/core/core.hpp>#include "PlayItem.h"class PlayWidget : public QGraphicsView{ Q_OBJECTpublic: PlayWidget();public slots: void getResult(const QImage &qimg);private:// QImage Mat2QImage(const cv::Mat &img); void updateScene(); // event void wheelEvent(QWheelEvent *event);private: PlayItem* m_play_item_ptr; QGraphicsScene* m_img_scene_ptr; cv::Mat m_img; double m_zoom_factor;};#endif // PLAYWIDGET_H
- PlayWidget.cpp
#include "PlayWidget.h"#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/core/core.hpp>#include <QWheelEvent>PlayWidget::PlayWidget(){ m_img_scene_ptr = new QGraphicsScene(); this->setScene(m_img_scene_ptr); m_play_item_ptr = new PlayItem(); m_img_scene_ptr->addItem(m_play_item_ptr); double width_scale = double(this->width()) / double(1280); double height_scale = double(this->height()) / double(720); m_zoom_factor = width_scale < height_scale ? width_scale : height_scale; this->updateScene();}void PlayWidget::getResult(const QImage &qimg){ m_play_item_ptr->setQImage(qimg);}void PlayWidget::updateScene(){ QMatrix matrix; matrix.scale(m_zoom_factor, m_zoom_factor); this->setMatrix(matrix);}void PlayWidget::wheelEvent(QWheelEvent *event){ if(event->delta() > 0) m_zoom_factor *= 1.15; else m_zoom_factor *= 0.9; this->updateScene();}
然后将PlayWidget类作为主窗口或者某个窗体的控件即可,当PlayWidget收到QImage,便可以显示出来,而且可以缩放
阅读全文
0 0
- QT实时视频播放界面设计
- QT OpenCV 播放视频
- Qt 视频播放
- Qt视频播放器
- 视频播放器的界面设计并实现播放器
- Qt播放视频的软件
- OpenCV 播放视频的QT
- Qt+Mplayer视频播放器
- Qt phonon视频播放控件
- <Qt>实例:视频播放器
- <Qt>实例:视频播放器
- qt 播放视频没有图像
- flash media server播放实时视频流
- 实时播放视频、音频、或者avi文件
- Android端录制视频,.NET实时播放
- QT界面设计
- QT视频播放错误解决方法及视频播放实现代码
- 基于Mplayer的QT视频播放器
- spring mvc 国际化
- 值得学习的C/C++语言开源项目,以及好多资源整理
- mybatis学习(二)
- ValueError: Expected 2D array, got 1D array instead:
- 一步一步制作yaffs/yaffs2根文件系统(二)---安装BusyBox,构造/bin、/sbin、/usr、linuxr
- QT实时视频播放界面设计
- 云和恩墨数据一体机助力青海移动云化起航
- zookeeper监听器原理
- SSH Client连接Ubuntu Server失败解法
- Effective 5
- EffectivePython-函数:闭包、生成器、迭代器协议
- 利用String类或StringBuffer类的方法,对输入的Email地址进行有效性验证。提示: 1)Email地址中应包含“@”和“.”符号; 2)“@”符号应该在“.”符号之前; 3
- HQL 检索方式
- 夜神模拟器 链接 studio