构建模板编辑界面

This commit is contained in:
codeboss 2025-06-09 00:42:56 +08:00
parent 35101bb2f5
commit 9b6ad519f3
6 changed files with 96 additions and 3 deletions

View File

@ -74,7 +74,6 @@ public:
void recoveryFrom(const QJsonObject& obj) override; void recoveryFrom(const QJsonObject& obj) override;
void saveTo(QJsonObject& obj) const override; void saveTo(QJsonObject& obj) const override;
void execute(std::shared_ptr<ImmediateMap> map, std::shared_ptr<const TypesQuery> in, QList<std::shared_ptr<TypesQueryResult>>& out) override; void execute(std::shared_ptr<ImmediateMap> map, std::shared_ptr<const TypesQuery> in, QList<std::shared_ptr<TypesQueryResult>>& out) override;
void execute(std::shared_ptr<ImmediateMap> map, std::shared_ptr<const TempletOperate> in, QList<std::shared_ptr<RespondDefault>>& out) override; void execute(std::shared_ptr<ImmediateMap> map, std::shared_ptr<const TempletOperate> in, QList<std::shared_ptr<RespondDefault>>& out) override;
void execute(std::shared_ptr<ImmediateMap> map, std::shared_ptr<const EntityOperate> in, QList<std::shared_ptr<RespondDefault>>& out) override; void execute(std::shared_ptr<ImmediateMap> map, std::shared_ptr<const EntityOperate> in, QList<std::shared_ptr<RespondDefault>>& out) override;

View File

@ -99,6 +99,7 @@
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="TempletAssemble.cpp" />
<QtRcc Include="sims_world.qrc" /> <QtRcc Include="sims_world.qrc" />
<QtUic Include="sims_world.ui" /> <QtUic Include="sims_world.ui" />
<QtMoc Include="sims_world.h" /> <QtMoc Include="sims_world.h" />
@ -107,6 +108,9 @@
<None Include="SimsWorld.ico" /> <None Include="SimsWorld.ico" />
<ResourceCompile Include="SimsWorld.rc" /> <ResourceCompile Include="SimsWorld.rc" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<QtMoc Include="TempletAssemble.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')"> <ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')">
<Import Project="$(QtMsBuild)\qt.targets" /> <Import Project="$(QtMsBuild)\qt.targets" />

View File

@ -46,5 +46,13 @@
<ClCompile Include="main.cpp"> <ClCompile Include="main.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="TempletAssemble.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<QtMoc Include="TempletAssemble.h">
<Filter>Header Files</Filter>
</QtMoc>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -0,0 +1,48 @@
#include "TempletAssemble.h"
#include <QLineEdit>
#include <QGridLayout>
#include <QVBoxLayout>
#include <QSplitter>
#include <QLabel>
#include <QGroupBox>
TempletAssemble::TempletAssemble()
:QWidget(nullptr),
_templet_present(new QListView(this)),
_templet_model(new QStandardItemModel(this)),
_t_add(new QPushButton(u8"添加模板",this)),
_t_remove(new QPushButton(u8"移除模板", this)),
_templet_name(new QLineEdit(this)),
_component_types(new QComboBox(this)),
_comp_add(new QPushButton(u8"添加组件", this)),
_comp_remove(new QPushButton(u8"移除组件", this)),
_component_present(new QListView(this)),
_component_model(new QStandardItemModel(this)),
_apply(new QPushButton(u8"应用", this))
{
auto layout = new QVBoxLayout(this);
auto split = new QSplitter(this);
layout->addWidget(split);
auto left_widget = new QGroupBox(u8"模板列表", this);
split->addWidget(left_widget);
auto llayout = new QGridLayout(left_widget);
llayout->addWidget(_templet_present, 0, 0, 3, 2);
llayout->addWidget(_t_add, 3, 0);
llayout->addWidget(_t_remove, 3, 1);
auto right_widget = new QWidget(this);
split->addWidget(right_widget);
auto rlayout = new QGridLayout(right_widget);
rlayout->addWidget(new QLabel(u8"模板名称", this), 0, 0);
rlayout->addWidget(_templet_name, 0, 1, 1, 4);
rlayout->addWidget(new QLabel(u8"组件类型", this), 1, 0);
rlayout->addWidget(_component_types, 1, 1, 1, 2);
rlayout->addWidget(_comp_add, 1, 3);
rlayout->addWidget(_comp_remove, 1, 4);
rlayout->addWidget(_component_present, 2, 0, 3, 5);
rlayout->addWidget(_apply, 5, 0, 1, 5);
rlayout->setColumnStretch(1, 1);
}

View File

@ -0,0 +1,29 @@
#pragma once
#include <QWidget>
#include <QListView>
#include <QStandardItemModel>
#include <QComboBox>
#include <QPushButton>
class TempletAssemble : public QWidget
{
Q_OBJECT
private:
QListView *const _templet_present;
QStandardItemModel *const _templet_model;
QPushButton *const _t_add, *const _t_remove;
QLineEdit *const _templet_name;
QComboBox *const _component_types;
QPushButton *const _comp_add, *const _comp_remove;
QListView *const _component_present;
QStandardItemModel *const _component_model;
QPushButton *const _apply;
public:
TempletAssemble();
virtual ~TempletAssemble() = default;
};

View File

@ -1,10 +1,15 @@
#include "sims_world.h" #include "sims_world.h"
#include "TempletAssemble.h"
#include <QtWidgets/QApplication> #include <QtWidgets/QApplication>
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
QApplication a(argc, argv); QApplication a(argc, argv);
SimsWorld w; //SimsWorld w;
w.show(); //w.show();
TempletAssemble tass;
tass.show();
return a.exec(); return a.exec();
} }