xviewer.cpp
void XViewer::RefreshCams()
{
auto c = XCameraConfig::Instance();
ui.cam_list->clear();
int count = c->GetCamCount();
for (int i = 0; i < count; i++)
{
auto cam = c->GetCam(i);
auto item = new QListWidgetItem(
QIcon(":/XViewer/img/cam.png"), C(cam.name));
ui.cam_list->addItem(item);
}
}//119
XViewer::XViewer(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
ui.normal->setVisible(false);
//setWindowFlags: 这是一个成员函数,用于设置窗口的各种标志(flags)。
// Qt::FramelessWindowHint: 这是一个标志(flag),表示窗口应该是无边框的,不会有默认的标题栏和边框。
setWindowFlags(Qt::FramelessWindowHint);
//布局head和body 垂直布局器
auto vlay = new QVBoxLayout();
//边框间距
vlay->setContentsMargins(0, 0, 0, 0);
//元素间距,head and body的间距为0
vlay->setSpacing(0);
vlay->addWidget(ui.head);
vlay->addWidget(ui.body);
this->setLayout(vlay);
//相机列表 和相机预览
//水平布局器
auto hlay = new QHBoxLayout();
ui.body->setLayout(hlay);
//边框间距
hlay->setContentsMargins(0, 0, 0, 0);
hlay->addWidget(ui.left);
hlay->addWidget(ui.cams);
//
/// 初始化右键菜单
// 视图=》 1 窗口
// 4 窗口
auto m = left_menu_.addMenu(C("视图"));
auto a = m->addAction(C("1窗口"));
connect(a, SIGNAL(triggered()), this, SLOT(View1()));
a = m->addAction(C("4窗口"));
connect(a, SIGNAL(triggered()), this, SLOT(View4()));
a = m->addAction(C("9窗口"));
connect(a, SIGNAL(triggered()), this, SLOT(View9()));
a = m->addAction(C("16窗口"));
connect(a, SIGNAL(triggered()), this, SLOT(View16()));
//默认九窗口
View9();
//刷新左侧摄像机列表
XCameraConfig::Instance()->Load(CAM_CONF_PATH);//119
{
XCameraData cd;
strcpy(cd.name, "camera1");
strcpy(cd.save_path, ".\\camera1\\");
strcpy(cd.url,
"rtsp://test:x12345678@192.168.2.64/h264/ch1/main/av_stream");
strcpy(cd.sub_url,
"rtsp://test:x12345678@192.168.2.64/h264/ch1/sub/av_stream");
XCameraConfig::Instance()->Push(cd);
}//119
RefreshCams();
}