#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 on the right QTabWidget* controlTabs = new QTabWidget(this); controlTabs->addTab(m_pipelineWidget, "Pipeline Control"); controlTabs->addTab(m_cameraWidget, "Camera Control"); // Create horizontal splitter: video on left (full height), controls on right QSplitter* mainSplitter = new QSplitter(Qt::Horizontal, this); mainSplitter->addWidget(m_videoWidget); mainSplitter->addWidget(controlTabs); mainSplitter->setStretchFactor(0, 2); // Video gets more space (2/3) mainSplitter->setStretchFactor(1, 1); // Controls get less space (1/3) // Set as central widget setCentralWidget(mainSplitter); }