C++ Qt Panel_CCTV 类实现: 视频播放和控制
#include"panel_cctv.h"\n#include"ui_panel_cctv.h"\n\n#include<QtWidgets>\n#include<QGraphicsVideoItem>\n#include<QDebug>\n\nPanel_CCTV::Panel_CCTV(QWidget*parent):\n\tQWidget(parent),\n\tui(new Ui::Panel_CCTV)\n{\n\tui->setupUi(this);\n\n\tm_mediaPlayer= new QMediaPlayer(this, QMediaPlayer::VideoSurface);\n\tm_videoItem= new QGraphicsVideoItem;\n\n\tQGraphicsScene*scene= new QGraphicsScene(this);\n\tQGraphicsView*graphicsView= new QGraphicsView(scene);\n\n\tscene->addItem(m_videoItem);\n\tQBoxLayout*layout= new QVBoxLayout(this);\n\tlayout->setMargin(50);\n\tlayout->addWidget(graphicsView);\n\tm_mediaPlayer->setVideoOutput(m_videoItem);\n\tm_videoItem->setSize(QSize(1300,860));\n\n\tconnect(m_mediaPlayer, QOverloadQMediaPlayer::Error::of(&QMediaPlayer::error),\n\t\t\tthis, &Panel_CCTV::handleError);\n\n\tgraphicsView->stackUnder(ui->bt_CameraNext);\n\t//graphicsView->stackUnder(ui->bt_ModeChange);\n\n\tCameraIndex= 0;\n\tCameraMode= 0;\n\n\tconnect(ui->bt_ModeChange, SIGNAL(clicked()), this, SLOT(bt_ModeChange_Clicked()));\n\tconnect(ui->bt_CameraNext, SIGNAL(clicked()), this, SLOT(bt_CameraNext_Clicked()));\n}\n\nPanel_CCTV::~Panel_CCTV()\n{\n\tdelete ui;\n}\n\nvoid Panel_CCTV::setUrl(const QUrl &url)\n{\n\tm_mediaPlayer->setMedia(url);\n}\n\nvoid Panel_CCTV::play()\n{\n\tm_mediaPlayer->play();\n}\n\nvoid Panel_CCTV::stop()\n{\n\tm_mediaPlayer->stop();\n}\n\nvoid Panel_CCTV::handleError()\n{\n\tconst QString errorString= m_mediaPlayer->errorString();\n\tQString message= "Error: ";\n\tif (errorString.isEmpty())\n\t\tmessage += " #" + QString::number(int(m_mediaPlayer->error()));\n\telse\n\t\tmessage += errorString;\n\n\tqDebug() << message;\n}\n\nvoid Panel_CCTV::bt_ModeChange_Clicked()\n{\n\tCameraIndex++;\n\tif(CameraIndex >= 9) CameraIndex= 0;\n\temit CameraSwap();\n}\n\nvoid Panel_CCTV::bt_CameraNext_Clicked()\n{\n\tCameraMode++;\n\tif(CameraMode >= 3) CameraMode= 0;\n\temit ModeSwap();\n}\n
原文地址: https://www.cveoy.top/t/topic/m30j 著作权归作者所有。请勿转载和采集!