/
klischa
/
AstraScanner2
Обзор
Документация
Войти
/
klischa
/
AstraScanner2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/controllers/ProjectTabBinder.cpp
66 строк
2 KB
Arena Agent
refactor: move project tab ui composition into binder
17 июн 2026, 00:29
17 июн 2026, 00:29
e9e7a8c
Код
Авторство
О чём код?
#include "ProjectTabBinder.h" #include <QTabWidget> #include <QWidget> #include <QVBoxLayout> #include <QHBoxLayout> #include <QPushButton> #include <QLabel> #include <QListWidget> ProjectTabBinder::ProjectTabBinder(QObject *parent) : QObject(parent) { } ProjectTabBinder::Widgets ProjectTabBinder::bind( QTabWidget *tabWidget, QWidget *owner, const std::function<void()> &onAddCurrentCloud, const std::function<void()> &onExportCurrentCloud, const std::function<void()> &onExportMesh, const std::function<void(const QPoint &)> &onContextMenu, const std::function<void(QListWidgetItem *)> &onItemDoubleClicked) { Widgets widgets; QWidget *projectTab = new QWidget(); tabWidget->addTab(projectTab, "Проект"); QVBoxLayout *projectLayout = new QVBoxLayout(projectTab); widgets.projectStatusLabel = new QLabel("Проект: (не открыт)", owner); projectLayout->addWidget(widgets.projectStatusLabel); QHBoxLayout *projectBtnRow = new QHBoxLayout(); QPushButton *addScanBtn = new QPushButton("Добавить текущее облако как скан", owner); QPushButton *exportCloudBtn = new QPushButton("Экспорт текущего облака…", owner); QPushButton *exportMeshBtn = new QPushButton("Экспорт меша…", owner); projectBtnRow->addWidget(addScanBtn); projectBtnRow->addWidget(exportCloudBtn); projectBtnRow->addWidget(exportMeshBtn); projectBtnRow->addStretch(); projectLayout->addLayout(projectBtnRow); widgets.scansList = new QListWidget(owner); widgets.scansList->setContextMenuPolicy(Qt::CustomContextMenu); projectLayout->addWidget(widgets.scansList, 1); connect(addScanBtn, &QPushButton::clicked, this, [onAddCurrentCloud]() { onAddCurrentCloud(); }); connect(exportCloudBtn, &QPushButton::clicked, this, [onExportCurrentCloud]() { onExportCurrentCloud(); }); connect(exportMeshBtn, &QPushButton::clicked, this, [onExportMesh]() { onExportMesh(); }); connect(widgets.scansList, &QListWidget::customContextMenuRequested, this, [onContextMenu](const QPoint &pos) { onContextMenu(pos); }); connect(widgets.scansList, &QListWidget::itemDoubleClicked, this, [onItemDoubleClicked](QListWidgetItem *item) { onItemDoubleClicked(item); }); return widgets; }