面板开关功能是整个系统最人性化的功能之一,可以对主界面中左侧右侧的各个小面板进行显示和隐藏,当隐藏的时候,另外的同级面板自动拉伸填充,这样就不会显得空洞,直接在每个面板的右上角提供了关闭按钮,也可以直接在顶部鼠标右键弹出菜单控制每个面板的显示和隐藏,面板的显示和隐藏以后,自动更新菜单的文字,保证永远都一致,有时候拖动位置乱了或者关闭了所有的,需要提供一个恢复所有面板的功能,做在右键菜单中,一次性恢复所有面板的显示。
主界面的整体布局采用QSplitter来控制可以调整占比,并自动记忆当前面板的占比到配置文件,下次启动软件自动恢复占比比例。
监控系统是由摄像、传输、控制、显示、记录登记5大部分组成。摄像机通过同轴视频电缆将视频图像传输到控制主机,控制主机再将视频信号分配到各监视器及录像设备,同时可将需要传输的语音信号同步录入到录像机内。 通过控制主机,操作人员可发出指令,对云台的上、下、左、右的动作进行控制及对镜头进行调焦变倍的操作,并可通过控制主机实现在多路摄像机及云台之间的切换。利用特殊的录像处理模式,可对图像进行录入、回放、处理等操作,使录像效果达到最佳。
视频监控系统由实时控制系统、监视系统及管理信息系统组成。实时控制系统完成实时数据采集处理、存储、反馈的功能;监视系统完成对各个监控点的全天候的监视,能在多操作控制点上切换多路图像;管理信息系统完成各类所需信息的采集、接收、传输、加工、处理,是整个系统的控制核心。视频监控系统是安全防范系统的组成部分,它是一种防范能力较强的综合系统。视频监控以其直观、方便、信息内容丰富而广泛应用于许多场合。
void frmMain::doAction()
{
QAction *action = (QAction *)sender();
QString text = action->text();
if (text == "显示时间和CPU") {
App::TimeVisible = true;
actionTime->setText("隐藏时间和CPU");
ui->widgetTime->setVisible(true);
} else if (text == "隐藏时间和CPU") {
App::TimeVisible = false;
actionTime->setText("显示时间和CPU");
ui->widgetTime->setVisible(false);
} else if (text == "显示设备列表") {
App::LeftTopVisible = true;
actionLeftTop->setText("隐藏设备列表");
emit showVisible(0, true);
} else if (text == "隐藏设备列表") {
App::LeftTopVisible = false;
actionLeftTop->setText("显示设备列表");
emit showVisible(0, false);
} else if (text == "显示窗口信息") {
App::LeftBottomVisible = true;
actionLeftBottom->setText("隐藏窗口信息");
emit showVisible(1, true);
} else if (text == "隐藏窗口信息") {
App::LeftBottomVisible = false;
actionLeftBottom->setText("显示窗口信息");
emit showVisible(1, false);
} else if (text == "显示云台操作") {
App::RightTopVisible = true;
actionRightTop->setText("隐藏云台操作");
emit showVisible(2, true);
} else if (text == "隐藏云台操作") {
App::RightTopVisible = false;
actionRightTop->setText("显示云台操作");
emit showVisible(2, false);
} else if (text == "显示设备控制") {
App::RightBottomVisible = true;
actionRightBottom->setText("隐藏设备控制");
emit showVisible(3, true);
} else if (text == "隐藏设备控制") {
App::RightBottomVisible = false;
actionRightBottom->setText("显示设备控制");
emit showVisible(3, false);
} else if (text == "恢复默认布局") {
App::TimeVisible = true;
actionTime->setText("隐藏时间和CPU");
ui->widgetTime->setVisible(true);
App::LeftTopVisible = true;
actionLeftTop->setText("隐藏设备列表");
emit showVisible(0, true);
App::LeftBottomVisible = true;
actionLeftBottom->setText("隐藏窗口信息");
emit showVisible(1, true);
App::RightTopVisible = true;
actionRightTop->setText("隐藏云台操作");
emit showVisible(2, true);
App::RightBottomVisible = true;
actionRightBottom->setText("隐藏设备控制");
emit showVisible(3, true);
}
App::writeConfig();
}
void frmVideo::showVisible(quint8 type, bool visible)
{
//左侧任意一个面板显示则先主面板显示
if ((type == 0 || type == 1) && visible) {
ui->splitterLeft->setVisible(true);
}
//左侧任意一个面板显示则先主面板显示
if ((type == 2 || type == 3) && visible) {
ui->splitterRight->setVisible(true);
}
if (type == 0) {
ui->widgetLeftTop->setVisible(visible);
} else if (type == 1) {
ui->widgetLeftBottom->setVisible(visible);
} else if (type == 2) {
ui->widgetRightTop->setVisible(visible);
} else if (type == 3) {
ui->widgetRightBottom->setVisible(visible);
}
//如果都隐藏了则整体面板隐藏
if (!ui->widgetLeftTop->isVisible() && !ui->widgetLeftBottom->isVisible()) {
ui->splitterLeft->setVisible(false);
}
if (!ui->widgetRightTop->isVisible() && !ui->widgetRightBottom->isVisible()) {
ui->splitterRight->setVisible(false);
}
}