From ace9e258e97da942041153a1cd247fbf46e92231 Mon Sep 17 00:00:00 2001 From: Linloir <3145078758@qq.com> Date: Mon, 19 Dec 2022 17:10:24 +0800 Subject: [PATCH] [UI][ADD] Embed model setter in editor page --- FinalProject/editorpage.cpp | 24 +++++++++++++++++++++++- FinalProject/editorpage.h | 5 +++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/FinalProject/editorpage.cpp b/FinalProject/editorpage.cpp index fc720af..6dfdd98 100644 --- a/FinalProject/editorpage.cpp +++ b/FinalProject/editorpage.cpp @@ -36,6 +36,12 @@ EditorPage::EditorPage(QWidget* parent) : _modelSelector = new ModelSelector(_mainWidget); _mainLayout->addWidget(_modelSelector); _modelSelector->show(); + + // Generate editing layout + _editingLayout = new QVBoxLayout(_mainWidget); + _editingLayout->setContentsMargins(0, 0, 0, 0); + _editingLayout->setSpacing(16); + _mainLayout->addLayout(_editingLayout); // Generate scene viewer _sceneViewerContainer = new RoundedCornerWidget(_mainWidget); @@ -47,11 +53,27 @@ EditorPage::EditorPage(QWidget* parent) : _sceneViewer = new SceneViewer(_sceneViewerContainer->mainWidget()); _sceneViewerContainerLayout->addWidget(_sceneViewer); _sceneViewer->show(); - _mainLayout->addWidget(_sceneViewerContainer); + _editingLayout->addWidget(_sceneViewerContainer); _sceneViewerContainer->show(); + // Generate model setter + _modelSetter = new ModelSetter(_mainWidget); + _modelSetter->setMaximumHeight(150); + _editingLayout->addWidget(_modelSetter); + _modelSetter->show(); + _modelSetter->setObjectName("ModelSetter"); + _modelSetter->setStyleSheet("#ModelSetter { background-color: #f0f0f0; border-radius: 10px; }"); + // Connect signals connect(_modelSelector, &ModelSelector::onObjectSelected, _sceneViewer, &SceneViewer::addObject); + connect(_sceneViewer, &SceneViewer::onSelect, _modelSetter, &ModelSetter::update); + connect(_sceneViewer, &SceneViewer::onUpdate, _modelSetter, &ModelSetter::update); + connect(_modelSetter, &ModelSetter::onAdjustStart, _sceneViewer, &SceneViewer::setDragFlag); + connect(_modelSetter, &ModelSetter::onAdjustEnd, _sceneViewer, &SceneViewer::clearDragFlag); + connect(_modelSetter, &ModelSetter::onAdjust, this, [=]() { + _sceneViewer->update(); + }); + connect(_modelSetter, &ModelSetter::onDeleteObject, _sceneViewer, &SceneViewer::deleteObject); } EditorPage::~EditorPage() {} diff --git a/FinalProject/editorpage.h b/FinalProject/editorpage.h index acf41cf..3b28202 100644 --- a/FinalProject/editorpage.h +++ b/FinalProject/editorpage.h @@ -8,6 +8,7 @@ #include "sceneviewer.h" #include "roundedcornerwidget.h" #include "modelselector.h" +#include "modelsetter.h" class EditorPage : public PageWidget { @@ -35,10 +36,14 @@ private: ModelSelector* _modelSelector = nullptr; + QVBoxLayout* _editingLayout = nullptr; + RoundedCornerWidget* _sceneViewerContainer = nullptr; QVBoxLayout* _sceneViewerContainerLayout = nullptr; SceneViewer* _sceneViewer = nullptr; + ModelSetter* _modelSetter = nullptr; + public: virtual PushButton* getPageIconButton(QWidget* context) override; virtual PushButton* getPageTextButton(QWidget* context) override;