[UI][ADD] Embed model setter in editor page

This commit is contained in:
Linloir 2022-12-19 17:10:24 +08:00
parent 3b06ec6ad8
commit ace9e258e9
No known key found for this signature in database
GPG Key ID: 58EEB209A0F2C366
2 changed files with 28 additions and 1 deletions

View File

@ -37,6 +37,12 @@ EditorPage::EditorPage(QWidget* parent) :
_mainLayout->addWidget(_modelSelector); _mainLayout->addWidget(_modelSelector);
_modelSelector->show(); _modelSelector->show();
// Generate editing layout
_editingLayout = new QVBoxLayout(_mainWidget);
_editingLayout->setContentsMargins(0, 0, 0, 0);
_editingLayout->setSpacing(16);
_mainLayout->addLayout(_editingLayout);
// Generate scene viewer // Generate scene viewer
_sceneViewerContainer = new RoundedCornerWidget(_mainWidget); _sceneViewerContainer = new RoundedCornerWidget(_mainWidget);
_sceneViewerContainer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); _sceneViewerContainer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
@ -47,11 +53,27 @@ EditorPage::EditorPage(QWidget* parent) :
_sceneViewer = new SceneViewer(_sceneViewerContainer->mainWidget()); _sceneViewer = new SceneViewer(_sceneViewerContainer->mainWidget());
_sceneViewerContainerLayout->addWidget(_sceneViewer); _sceneViewerContainerLayout->addWidget(_sceneViewer);
_sceneViewer->show(); _sceneViewer->show();
_mainLayout->addWidget(_sceneViewerContainer); _editingLayout->addWidget(_sceneViewerContainer);
_sceneViewerContainer->show(); _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 signals
connect(_modelSelector, &ModelSelector::onObjectSelected, _sceneViewer, &SceneViewer::addObject); 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() {} EditorPage::~EditorPage() {}

View File

@ -8,6 +8,7 @@
#include "sceneviewer.h" #include "sceneviewer.h"
#include "roundedcornerwidget.h" #include "roundedcornerwidget.h"
#include "modelselector.h" #include "modelselector.h"
#include "modelsetter.h"
class EditorPage : public PageWidget { class EditorPage : public PageWidget {
@ -35,10 +36,14 @@ private:
ModelSelector* _modelSelector = nullptr; ModelSelector* _modelSelector = nullptr;
QVBoxLayout* _editingLayout = nullptr;
RoundedCornerWidget* _sceneViewerContainer = nullptr; RoundedCornerWidget* _sceneViewerContainer = nullptr;
QVBoxLayout* _sceneViewerContainerLayout = nullptr; QVBoxLayout* _sceneViewerContainerLayout = nullptr;
SceneViewer* _sceneViewer = nullptr; SceneViewer* _sceneViewer = nullptr;
ModelSetter* _modelSetter = nullptr;
public: public:
virtual PushButton* getPageIconButton(QWidget* context) override; virtual PushButton* getPageIconButton(QWidget* context) override;
virtual PushButton* getPageTextButton(QWidget* context) override; virtual PushButton* getPageTextButton(QWidget* context) override;