From 3d8420f6176d84e287a4fa368a62abbecb1a2d89 Mon Sep 17 00:00:00 2001
From: karlis <2995621482@qq.com>
Date: Sat, 18 Mar 2023 23:10:16 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=9B=BE=E5=B1=82=E5=88=97?=
=?UTF-8?q?=E8=A1=A8=E6=98=BE=E7=A4=BA=E6=95=88=E6=9E=9C=20|=20#7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../EditorWidgetItem.ui | 7 +-
.../src/Editor/EditorWidgetItem.cpp | 1 +
.../src/Editor/ElementPoolWidget.cpp | 1 +
.../src/Editor/ElementPoolWidget.h | 1 +
.../src/Editor/LayerWrapper.cpp | 65 +++++++++++++++++--
.../src/Editor/LayerWrapper.h | 4 ++
.../src/Editor/RightBar/LayerTreeWidget.cpp | 8 +--
7 files changed, 74 insertions(+), 13 deletions(-)
diff --git a/ArchitectureColoredPainting/EditorWidgetItem.ui b/ArchitectureColoredPainting/EditorWidgetItem.ui
index 63fbd7d..e269e9d 100644
--- a/ArchitectureColoredPainting/EditorWidgetItem.ui
+++ b/ArchitectureColoredPainting/EditorWidgetItem.ui
@@ -182,7 +182,12 @@
- 图层树
+ 图层名
+
+
+
+
+ 关联图元
diff --git a/ArchitectureColoredPainting/src/Editor/EditorWidgetItem.cpp b/ArchitectureColoredPainting/src/Editor/EditorWidgetItem.cpp
index 8f6afc9..bef3c7c 100644
--- a/ArchitectureColoredPainting/src/Editor/EditorWidgetItem.cpp
+++ b/ArchitectureColoredPainting/src/Editor/EditorWidgetItem.cpp
@@ -32,6 +32,7 @@ EditorWidgetItem::EditorWidgetItem(QString filePath,QWidget *parent) : QWidget(p
connect(treeWidget, &LayerTreeWidget::requireRefreshPreview, this,
&EditorWidgetItem::triggerRefreshPreview);
connect(layerInfoDisplayWidget, &InfoDisplayWidget::requireSelfRefresh, layerInfoDisplayWidget, &InfoDisplayWidget::triggerSelfRefresh);
+ connect(elementInfoDisplayWidget, &ElementPoolWidget::refreshLayerTree, treeWidget, &LayerTreeWidget::refresh);
// &EditorWidget::triggerRefreshPreview);
// test
QFile settingFile;
diff --git a/ArchitectureColoredPainting/src/Editor/ElementPoolWidget.cpp b/ArchitectureColoredPainting/src/Editor/ElementPoolWidget.cpp
index e1a4f76..17ec55a 100644
--- a/ArchitectureColoredPainting/src/Editor/ElementPoolWidget.cpp
+++ b/ArchitectureColoredPainting/src/Editor/ElementPoolWidget.cpp
@@ -67,6 +67,7 @@ void ElementPoolWidget::setElementManager(ElementManager* element)
void ElementPoolWidget::refresh() {
this->setElementList(this->elementManager->elements);
+ emit refreshLayerTree();
// update();
}
diff --git a/ArchitectureColoredPainting/src/Editor/ElementPoolWidget.h b/ArchitectureColoredPainting/src/Editor/ElementPoolWidget.h
index 66129b9..82ee0ff 100644
--- a/ArchitectureColoredPainting/src/Editor/ElementPoolWidget.h
+++ b/ArchitectureColoredPainting/src/Editor/ElementPoolWidget.h
@@ -25,6 +25,7 @@ public:
signals:
void elementSelected(GraphicElement* element);
+ void refreshLayerTree();
public slots:
int pictureItemClicked(QListWidgetItem* item);
diff --git a/ArchitectureColoredPainting/src/Editor/LayerWrapper.cpp b/ArchitectureColoredPainting/src/Editor/LayerWrapper.cpp
index e30b068..e83ae7e 100644
--- a/ArchitectureColoredPainting/src/Editor/LayerWrapper.cpp
+++ b/ArchitectureColoredPainting/src/Editor/LayerWrapper.cpp
@@ -192,19 +192,39 @@ void FolderLayerWrapper::delSelf() {
QTreeWidgetItem* LayerWrapper::getQTreeItem()
{
- this->qTreeWidgetItem->setText(0, this->property.name);
this->qTreeWidgetItem->setData(0, Qt::UserRole, QVariant::fromValue(this));
return this->qTreeWidgetItem;
}
+QTreeWidgetItem* LeafLayerWrapper::getQTreeItem()
+{
+ if (this->qTreeWidgetItem == nullptr)
+ this->qTreeWidgetItem = new QTreeWidgetItem();
+ if (typeid(*wrappedElement) == typeid(GroupElement))
+ {
+ this->qTreeWidgetItem->setText(0, "@ "+this->property.name);
+ }
+ else
+ {
+ this->qTreeWidgetItem->setText(0, this->property.name);
+ }
+ this->qTreeWidgetItem->setText(1,">> "+this->wrappedElement->name);
+ this->qTreeWidgetItem->setTextColor(1, Qt::blue);
+ return LayerWrapper::getQTreeItem();
+}
+
QTreeWidgetItem* FolderLayerWrapper::getQTreeItem()
{
- while (this->qTreeWidgetItem->childCount() > 0) {
- this->qTreeWidgetItem->removeChild(this->qTreeWidgetItem->child(0));
- }
- for (auto& child : this->children) {
+ for (auto& child : this->children) {
this->qTreeWidgetItem->addChild(child->getQTreeItem());
}
+ this->qTreeWidgetItem->setText(0, this->property.name);
+ auto ele = this->elementManager->getElementById(this->getReferencedBy());
+ if (ele != nullptr)
+ {
+ this->qTreeWidgetItem->setText(1, "<< " + ele->name);
+ this->qTreeWidgetItem->setTextColor(1, Qt::darkGreen);
+ }
return LayerWrapper::getQTreeItem();
}
@@ -317,4 +337,37 @@ void FolderLayerWrapper::collectDownReachable(std::set& reachable
LayerWrapper::collectDownReachable(reachable);
for (auto& child : children)
child->collectDownReachable(reachable);
-}
\ No newline at end of file
+}
+
+void LayerWrapper::refreshTreeItem()
+{
+
+}
+
+void LeafLayerWrapper::refreshTreeItem()
+{
+ if (typeid(*wrappedElement) == typeid(GroupElement))
+ {
+ this->qTreeWidgetItem->setText(0, "@ " + this->property.name);
+ }
+ else
+ {
+ this->qTreeWidgetItem->setText(0, this->property.name);
+ }
+ this->qTreeWidgetItem->setText(1, ">> " + this->wrappedElement->name);
+ this->qTreeWidgetItem->setTextColor(1, Qt::blue);
+}
+
+void FolderLayerWrapper::refreshTreeItem()
+{
+ for (auto& child : this->children) {
+ child->refreshTreeItem();
+ }
+ this->qTreeWidgetItem->setText(0, this->property.name);
+ auto ele = this->elementManager->getElementById(this->getReferencedBy());
+ if (ele != nullptr)
+ {
+ this->qTreeWidgetItem->setText(1, "<< " + ele->name);
+ this->qTreeWidgetItem->setTextColor(1, Qt::darkGreen);
+ }
+}
diff --git a/ArchitectureColoredPainting/src/Editor/LayerWrapper.h b/ArchitectureColoredPainting/src/Editor/LayerWrapper.h
index 92d82d1..b767d35 100644
--- a/ArchitectureColoredPainting/src/Editor/LayerWrapper.h
+++ b/ArchitectureColoredPainting/src/Editor/LayerWrapper.h
@@ -70,6 +70,7 @@ class LayerWrapper
~LayerWrapper() = default;
virtual void collectUpReachable(std::set& reachable);
virtual void collectDownReachable(std::set& reachable);
+ virtual void refreshTreeItem();
};
class FolderLayerWrapper : public LayerWrapper
@@ -94,6 +95,7 @@ class FolderLayerWrapper : public LayerWrapper
int getReferencedBy()const;
void paint(QPainter* painter, QTransform transform = QTransform(), bool ignoreSelected = false) override;
void collectDownReachable(std::set& reachable) override;
+ void refreshTreeItem() override;
};
class LeafLayerWrapper : public LayerWrapper
@@ -110,6 +112,8 @@ class LeafLayerWrapper : public LayerWrapper
QJsonObject toJson() const override;
void paint(QPainter* painter, QTransform transform = QTransform(), bool ignoreSelected = false) override;
void collectDownReachable(std::set& reachable) override;
+ QTreeWidgetItem* getQTreeItem() override;
+ void refreshTreeItem() override;
};
Q_DECLARE_METATYPE(LayerWrapper *)
diff --git a/ArchitectureColoredPainting/src/Editor/RightBar/LayerTreeWidget.cpp b/ArchitectureColoredPainting/src/Editor/RightBar/LayerTreeWidget.cpp
index 8b85c1a..69a67b9 100644
--- a/ArchitectureColoredPainting/src/Editor/RightBar/LayerTreeWidget.cpp
+++ b/ArchitectureColoredPainting/src/Editor/RightBar/LayerTreeWidget.cpp
@@ -9,7 +9,7 @@ LayerTreeWidget::LayerTreeWidget(QWidget *parent)
this->selectedItem = nullptr;
this->copiedItem = nullptr;
this->setContextMenuPolicy(Qt::CustomContextMenu);
- this->setHeaderLabel("Layer Content");
+ this->setColumnWidth(0, 240);
connect(this, &QTreeWidget::customContextMenuRequested, this, &LayerTreeWidget::popMenu);
connect(this, &QTreeWidget::currentItemChanged, [=](QTreeWidgetItem *currentItem) {
if (this->selectedItem != nullptr) {
@@ -126,9 +126,5 @@ void LayerTreeWidget::onRenameEvent()
}
void LayerTreeWidget::refresh() {
- // if(this->root!=nullptr)
- //{
- // this->clear();
- // this->addTopLevelItem(this->root->getQTreeItem());
- //}
+ this->root->refreshTreeItem();
}
\ No newline at end of file