From 4b97ece85d4842ee78abe759a2adb896aa4287f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=B0=81=E7=BE=BD?= <2360164671@qq.com> Date: Sat, 19 Nov 2022 17:17:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=86Preview=E7=AA=97?= =?UTF-8?q?=E5=8F=A3=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ArchitectureColoredPainting.vcxproj | 2 ++ ...rchitectureColoredPainting.vcxproj.filters | 6 +++++ ArchitectureColoredPainting/EditorWidget.ui | 27 +++++++++++++------ .../src/Editor/EditorWidget.cpp | 21 ++++----------- .../src/Editor/EditorWidget.h | 7 ++--- .../src/Editor/PreviewWindow.cpp | 26 ++++++++++++++++++ .../src/Editor/PreviewWindow.h | 19 +++++++++++++ 7 files changed, 79 insertions(+), 29 deletions(-) create mode 100644 ArchitectureColoredPainting/src/Editor/PreviewWindow.cpp create mode 100644 ArchitectureColoredPainting/src/Editor/PreviewWindow.h diff --git a/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj b/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj index 6aaae03..84fd238 100644 --- a/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj +++ b/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj @@ -103,6 +103,7 @@ + @@ -159,6 +160,7 @@ + diff --git a/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj.filters b/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj.filters index 1d9364f..8fb8e83 100644 --- a/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj.filters +++ b/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj.filters @@ -138,6 +138,9 @@ Source Files + + Source Files + @@ -164,6 +167,9 @@ Header Files + + Header Files + diff --git a/ArchitectureColoredPainting/EditorWidget.ui b/ArchitectureColoredPainting/EditorWidget.ui index 68e9a6c..b3ad826 100644 --- a/ArchitectureColoredPainting/EditorWidget.ui +++ b/ArchitectureColoredPainting/EditorWidget.ui @@ -27,18 +27,29 @@ 0 - - - 纹理编辑 - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - + + + + + 纹理编辑 + + + + + + + + + + PreviewWindow + QGraphicsView +
PreviewWindow.h
+
+
diff --git a/ArchitectureColoredPainting/src/Editor/EditorWidget.cpp b/ArchitectureColoredPainting/src/Editor/EditorWidget.cpp index c3ff919..1e0544e 100644 --- a/ArchitectureColoredPainting/src/Editor/EditorWidget.cpp +++ b/ArchitectureColoredPainting/src/Editor/EditorWidget.cpp @@ -3,28 +3,17 @@ EditorWidget::EditorWidget(QWidget *parent) : QWidget(parent) { ui.setupUi(this); + previewWindow = ui.Preview; } EditorWidget::~EditorWidget() { } - +#include "QGraphicsItem.h" +#include "QGraphicsScene.h" +#include using namespace std; void EditorWidget::paintEvent(QPaintEvent *event) { - QPainter pt; - pt.begin(this); - pt.setRenderHint(QPainter::Antialiasing); - QFile settingFile; - settingFile.setFileName("C:/Users/Karlis/Desktop/data.json"); - settingFile.open(QFile::ReadOnly); - QByteArray setting = settingFile.readAll().trimmed(); - QJsonDocument jsonDoc(QJsonDocument::fromJson(setting)); - auto jElements = jsonDoc.object().value("elements").toArray(); - for (auto &&ele : jElements) - { - SimpleElement element(ele.toObject()); - pt.drawPath(element.getPaintObject()); - } - pt.end(); + previewWindow->show(); } diff --git a/ArchitectureColoredPainting/src/Editor/EditorWidget.h b/ArchitectureColoredPainting/src/Editor/EditorWidget.h index 09d7eb4..10ae5b8 100644 --- a/ArchitectureColoredPainting/src/Editor/EditorWidget.h +++ b/ArchitectureColoredPainting/src/Editor/EditorWidget.h @@ -1,15 +1,11 @@ #pragma once #include "GraphicElement.h" +#include "PreviewWindow.h" #include "ui_EditorWidget.h" #include #include -#include -#include -#include -#include -#include class EditorWidget : public QWidget { Q_OBJECT @@ -21,4 +17,5 @@ class EditorWidget : public QWidget private: Ui::EditorWidgetClass ui; + PreviewWindow *previewWindow; }; diff --git a/ArchitectureColoredPainting/src/Editor/PreviewWindow.cpp b/ArchitectureColoredPainting/src/Editor/PreviewWindow.cpp new file mode 100644 index 0000000..9de0d83 --- /dev/null +++ b/ArchitectureColoredPainting/src/Editor/PreviewWindow.cpp @@ -0,0 +1,26 @@ +#include "PreviewWindow.h" + +PreviewWindow::PreviewWindow(QWidget *parent) : QGraphicsView(parent) +{ + this->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); + mainScene = new QGraphicsScene(this); + this->setScene(mainScene); +} +void PreviewWindow::show() +{ + mainScene->clear(); + QFile settingFile; + settingFile.setFileName("C:/Users/Karlis/Desktop/data.json"); + settingFile.open(QFile::ReadOnly); + QByteArray setting = settingFile.readAll().trimmed(); + QJsonDocument jsonDoc(QJsonDocument::fromJson(setting)); + auto jElements = jsonDoc.object().value("elements").toArray(); + for (auto &&ele : jElements) + { + SimpleElement element(ele.toObject()); + QGraphicsPathItem *item = new QGraphicsPathItem(element.getPaintObject()); + mainScene->addItem(item); + } + + QGraphicsView::show(); +} diff --git a/ArchitectureColoredPainting/src/Editor/PreviewWindow.h b/ArchitectureColoredPainting/src/Editor/PreviewWindow.h new file mode 100644 index 0000000..ac6805a --- /dev/null +++ b/ArchitectureColoredPainting/src/Editor/PreviewWindow.h @@ -0,0 +1,19 @@ +#pragma once +#include "GraphicElement.h" +#include "QGraphicsItem.h" +#include "QGraphicsView.h" +#include +#include +#include +#include +#include +class PreviewWindow : public QGraphicsView +{ + Q_OBJECT + private: + QGraphicsScene *mainScene; + + public: + PreviewWindow(QWidget *parent = 0); + void show(); +};