#include "widget.h" #include "ui_widget.h" #include #include #include #include #include #include "cameraplayer.h" widget::widget(QWidget *parent) : QWidget(parent), ui(new Ui::widget) { ui->setupUi(this); initCameraPlayer(); } widget::~widget() { delete m_cameraPlayer1; m_cameraPlayer1 = nullptr; delete m_cameraPlayer2; m_cameraPlayer2 = nullptr; delete m_cameraPlayer3; m_cameraPlayer3 = nullptr; delete m_cameraPlayer4; m_cameraPlayer4 = nullptr; delete ui; } /* 开启预览按钮 */ void widget::on_pBtn_startRealPlay_clicked() { if(m_cameraPlayer1 != nullptr) { m_cameraPlayer1->startPlay(); } if(m_cameraPlayer2 != nullptr) { m_cameraPlayer2->startPlay(); } if(m_cameraPlayer3 != nullptr) { m_cameraPlayer3->startPlay(); } if(m_cameraPlayer4 != nullptr) { m_cameraPlayer4->startPlay(); } } /* 重新创建窗口 */ void widget::on_pBtn_reCreate_clicked() { if(m_cameraPlayer1 != nullptr) { delete m_cameraPlayer1; m_cameraPlayer1 = nullptr; } if(m_cameraPlayer2 != nullptr) { delete m_cameraPlayer2; m_cameraPlayer2 = nullptr; } if(m_cameraPlayer3 != nullptr) { delete m_cameraPlayer3; m_cameraPlayer3 = nullptr; } if(m_cameraPlayer4 != nullptr) { delete m_cameraPlayer4; m_cameraPlayer4 = nullptr; } initCameraPlayer(); on_pBtn_startRealPlay_clicked(); } /* 窗口缩放事件 */ void widget::resizeEvent(QResizeEvent *event) { QWidget::resizeEvent(event); /* 获取窗口大小 */ QSize size = ui->widget_display1->size(); if(m_cameraPlayer1 != nullptr) m_cameraPlayer1->setPlayWndSize(size); if(m_cameraPlayer2 != nullptr) m_cameraPlayer2->setPlayWndSize(size); if(m_cameraPlayer3 != nullptr) m_cameraPlayer3->setPlayWndSize(size); if(m_cameraPlayer4 != nullptr) m_cameraPlayer4->setPlayWndSize(size); } /* 显示事件 */ void widget::showEvent(QShowEvent *event) { QWidget::showEvent(event); /* 获取窗口大小 */ QSize size = ui->widget_display1->size(); if(m_cameraPlayer1 != nullptr) m_cameraPlayer1->setPlayWndSize(size); if(m_cameraPlayer2 != nullptr) m_cameraPlayer2->setPlayWndSize(size); if(m_cameraPlayer3 != nullptr) m_cameraPlayer3->setPlayWndSize(size); if(m_cameraPlayer4 != nullptr) m_cameraPlayer4->setPlayWndSize(size); } void widget::initCameraPlayer() { /* 通过文件读取摄像机IP信息 */ readCameraInfo(); CameraInfo_t cam1 = m_listCameraInfo.at(0); if(!cam1.cameraIp.isEmpty()) { /* 创建摄像机播放器 */ m_cameraPlayer1 = new CameraPlayer; QImage image(1666, 720, QImage::Format_RGB888); m_cameraPlayer1->setImage(image); m_cameraPlayer1->initCamera(cam1.cameraIp, cam1.cameraPort, cam1.username, cam1.password); m_cameraPlayer1->startRealPlay(1); /* 设置播放窗口 */ m_cameraPlayer1->setPlayWndParent(ui->widget_display1); m_cameraPlayer1->setPlayWndSize(ui->widget_display1->size()); } /* 创建其他播放窗口 */ if(m_listCameraInfo.size() < 2) { return; } CameraInfo_t cam2 = m_listCameraInfo.at(1); if(!cam2.cameraIp.isEmpty()) { m_cameraPlayer2 = new CameraPlayer; QImage image(1666, 720, QImage::Format_RGB888); m_cameraPlayer2->setImage(image); m_cameraPlayer2->initCamera(cam2.cameraIp, cam2.cameraPort, cam2.username, cam2.password); m_cameraPlayer2->startRealPlay(1); m_cameraPlayer2->setPlayWndParent(ui->widget_display2); m_cameraPlayer2->setPlayWndSize(ui->widget_display2->size()); } if(m_listCameraInfo.size() < 3) { return; } CameraInfo_t cam3 = m_listCameraInfo.at(2); if(!cam3.cameraIp.isEmpty()) { m_cameraPlayer3 = new CameraPlayer; QImage image(1666, 720, QImage::Format_RGB888); m_cameraPlayer3->setImage(image); m_cameraPlayer3->initCamera(cam3.cameraIp, cam3.cameraPort, cam3.username, cam3.password); m_cameraPlayer3->startRealPlay(1); m_cameraPlayer3->setPlayWndParent(ui->widget_display3); m_cameraPlayer3->setPlayWndSize(ui->widget_display3->size()); } if(m_listCameraInfo.size() < 4) { return; } CameraInfo_t cam4 = m_listCameraInfo.at(3); if(!cam4.cameraIp.isEmpty()) { m_cameraPlayer4 = new CameraPlayer; QImage image(1666, 720, QImage::Format_RGB888); m_cameraPlayer4->setImage(image); m_cameraPlayer4->initCamera(cam4.cameraIp, cam4.cameraPort, cam4.username, cam4.password); m_cameraPlayer4->startRealPlay(1); m_cameraPlayer4->setPlayWndParent(ui->widget_display4); m_cameraPlayer4->setPlayWndSize(ui->widget_display4->size()); } } /* 读取摄像机IP信息 */ void widget::readCameraInfo() { QSettings settings("camera.ini", QSettings::IniFormat); settings.beginGroup("Camera1"); CameraInfo_t info1; info1.cameraIp = settings.value("IP", "").toString(); info1.cameraPort = settings.value("Port", 0).toInt(); info1.username = settings.value("Username", "").toString(); info1.password = settings.value("Password", "").toString(); settings.endGroup(); m_listCameraInfo.append(info1); settings.beginGroup("Camera2"); CameraInfo_t info2; info2.cameraIp = settings.value("IP", "").toString(); info2.cameraPort = settings.value("Port", 0).toInt(); info2.username = settings.value("Username", "").toString(); info2.password = settings.value("Password", "").toString(); settings.endGroup(); m_listCameraInfo.append(info2); settings.beginGroup("Camera3"); CameraInfo_t info3; info3.cameraIp = settings.value("IP", "").toString(); info3.cameraPort = settings.value("Port", 0).toInt(); info3.username = settings.value("Username", "").toString(); info3.password = settings.value("Password", "").toString(); settings.endGroup(); m_listCameraInfo.append(info3); settings.beginGroup("Camera4"); CameraInfo_t info4; info4.cameraIp = settings.value("IP", "").toString(); info4.cameraPort = settings.value("Port", 0).toInt(); info4.username = settings.value("Username", "").toString(); info4.password = settings.value("Password", "").toString(); settings.endGroup(); m_listCameraInfo.append(info4); }