#include "mainwindow.h" #include "ui_mainwindow.h" #include #include #include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); setWindowTitle("GStreamer Camera Viewer"); resize(1400, 900); setupUI(); } MainWindow::~MainWindow() { delete m_socketClient; delete ui; } void MainWindow::setupUI() { // Create socket client m_socketClient = new SocketClient("/tmp/vizion_control.sock", this); // Create widgets m_videoWidget = new VideoViewerWidget(this); m_pipelineWidget = new GStreamerPipelineWidget(m_socketClient, this); m_cameraWidget = new CameraControlWidget(m_socketClient, this); // Create tab widget for controls QTabWidget* controlTabs = new QTabWidget(this); controlTabs->addTab(m_pipelineWidget, "Pipeline Control"); controlTabs->addTab(m_cameraWidget, "Camera Control"); // Create vertical splitter: video on top, controls on bottom QSplitter* mainSplitter = new QSplitter(Qt::Vertical, this); mainSplitter->addWidget(m_videoWidget); mainSplitter->addWidget(controlTabs); mainSplitter->setStretchFactor(0, 3); // Video gets more space mainSplitter->setStretchFactor(1, 1); // Controls get less space // Set as central widget setCentralWidget(mainSplitter); }