diff --git a/ArchitectureColoredPainting/src/Editor/EditorWidgetItem.cpp b/ArchitectureColoredPainting/src/Editor/EditorWidgetItem.cpp index 01ca5b3..9411fe8 100644 --- a/ArchitectureColoredPainting/src/Editor/EditorWidgetItem.cpp +++ b/ArchitectureColoredPainting/src/Editor/EditorWidgetItem.cpp @@ -14,6 +14,7 @@ EditorWidgetItem::EditorWidgetItem(QString filePath,QWidget *parent) : QWidget(p elementInfoDisplayWidget = dynamic_cast(tabWidget->widget(1)); qDebug() << layerInfoDisplayWidget; qDebug() << elementInfoDisplayWidget; + connect(treeWidget, &LayerTreeWidget::displayLayerChange, previewWindow, &PreviewWindow::currentLayerChanged); connect(treeWidget, &LayerTreeWidget::requireRefreshElementWidget, elementInfoDisplayWidget, &ElementPoolWidget::refresh); connect(layerInfoDisplayWidget, &InfoDisplayWidget::requireRefreshElementWidget, elementInfoDisplayWidget, &ElementPoolWidget::refresh); connect(treeWidget, &LayerTreeWidget::displayLayerChange, this, &EditorWidgetItem::onLayerChange); diff --git a/ArchitectureColoredPainting/src/Editor/GraphicElement.cpp b/ArchitectureColoredPainting/src/Editor/GraphicElement.cpp index 0c7bf52..403ae3f 100644 --- a/ArchitectureColoredPainting/src/Editor/GraphicElement.cpp +++ b/ArchitectureColoredPainting/src/Editor/GraphicElement.cpp @@ -47,6 +47,7 @@ PixelPath SimpleElement::getPaintObject(std::vector> PixelPath result; Renderer::ElementStyleStrokeDemo demo(2); auto [img, mov] = renderer->drawElement(painterPath, demo, 1.0); + //qDebug() << mov; //qDebug() << img << " ------"; result.addImage(img, mov); //result.addPath(painterPath); diff --git a/ArchitectureColoredPainting/src/Editor/PreviewWindow.cpp b/ArchitectureColoredPainting/src/Editor/PreviewWindow.cpp index 0db3c48..2bdcdc7 100644 --- a/ArchitectureColoredPainting/src/Editor/PreviewWindow.cpp +++ b/ArchitectureColoredPainting/src/Editor/PreviewWindow.cpp @@ -10,6 +10,7 @@ PreviewWindow::PreviewWindow(QWidget *parent) : QOpenGLWidget(parent) painter->setRenderHint(QPainter::SmoothPixmapTransform); painter->setRenderHint(QPainter::HighQualityAntialiasing); layerManager = nullptr; + currentLayer = nullptr; } void PreviewWindow::initialize(LayerManager *layerManager,QSize windowSize) @@ -47,6 +48,14 @@ void PreviewWindow::paintGL() painter->setRenderHint(QPainter::Antialiasing); painter->setRenderHint(QPainter::HighQualityAntialiasing); layerManager->paint(painter,this->size()); + if (currentLayer != nullptr) + { + QPen pen = painter->pen(); // 获取当前的画笔 + pen.setStyle(Qt::DashLine); // 设置画笔样式为虚线 + painter->setPen(pen); // 应用画笔设置 + painter->drawRect(this->currentLayer->getCache().getBoundingRect()); // 绘制矩形 + } + painter->end(); } @@ -56,4 +65,14 @@ void PreviewWindow::resizeGL(int w, int h) Renderer::ElementRenderer* const PreviewWindow::getRenderer()const { return this->renderer; +} + +void PreviewWindow::currentLayerChanged(LayerWrapper* layer) +{ + this->currentLayer = layer; +} + +void PreviewWindow::refresh() +{ + this->repaint(); } \ No newline at end of file diff --git a/ArchitectureColoredPainting/src/Editor/PreviewWindow.h b/ArchitectureColoredPainting/src/Editor/PreviewWindow.h index 9a0a4bc..9c89f80 100644 --- a/ArchitectureColoredPainting/src/Editor/PreviewWindow.h +++ b/ArchitectureColoredPainting/src/Editor/PreviewWindow.h @@ -19,6 +19,8 @@ class PreviewWindow : public QOpenGLWidget, protected QOpenGLFunctions LayerManager *layerManager; Renderer::ElementRenderer* renderer; QSize logicalSize; + QRectF viewportRect; + LayerWrapper* currentLayer; public: PreviewWindow(QWidget *parent = nullptr); @@ -28,4 +30,8 @@ class PreviewWindow : public QOpenGLWidget, protected QOpenGLFunctions void paintGL() override; void resizeGL(int w, int h) override; Renderer::ElementRenderer* const getRenderer()const; + + public slots: + void currentLayerChanged(LayerWrapper*); + void refresh(); }; diff --git a/ArchitectureColoredPainting/src/Editor/RightBar/LayerTreeWidget.cpp b/ArchitectureColoredPainting/src/Editor/RightBar/LayerTreeWidget.cpp index 1889d70..f6962db 100644 --- a/ArchitectureColoredPainting/src/Editor/RightBar/LayerTreeWidget.cpp +++ b/ArchitectureColoredPainting/src/Editor/RightBar/LayerTreeWidget.cpp @@ -13,10 +13,14 @@ LayerTreeWidget::LayerTreeWidget(QWidget *parent) connect(this, &QTreeWidget::customContextMenuRequested, this, &LayerTreeWidget::popMenu); connect(this, &QTreeWidget::currentItemChanged, [=](QTreeWidgetItem *currentItem) { this->selectedItem = currentItem; - if(this->selectedItem !=nullptr) - emit displayLayerChange(this->selectedItem->data(0, Qt::UserRole).value()); - else - emit displayLayerChange(nullptr); + if (this->selectedItem != nullptr) { + auto layer = this->selectedItem->data(0, Qt::UserRole).value(); + emit displayLayerChange(layer); + } + else { + emit displayLayerChange(nullptr); + } + emit requireRefreshPreview(); }); // connect(this, &QTreeWidget::itemDoubleClicked, this, &LayerTreeWidget::onItemDoubleClicked); } diff --git a/ArchitectureColoredPainting/src/Editor/RightBar/LayerTreeWidget.h b/ArchitectureColoredPainting/src/Editor/RightBar/LayerTreeWidget.h index ca784fd..e7472dd 100644 --- a/ArchitectureColoredPainting/src/Editor/RightBar/LayerTreeWidget.h +++ b/ArchitectureColoredPainting/src/Editor/RightBar/LayerTreeWidget.h @@ -20,7 +20,7 @@ class LayerTreeWidget : public QTreeWidget // void mouseDoubleClickEvent(QMouseEvent *event) override; // void onItemDoubleClicked(QTreeWidgetItem *item, int column = 0); - signals: +signals: void displayLayerChange(LayerWrapper *); void requireRefreshPreview(); void requireRefreshElementWidget();