|
- #include "plcdocument.h"
- #include <QGraphicsScene>
- #include <QGraphicsView>
- #include <QPainter>
- #include <QBrush>
- #include <QPen>
- #include <QFile>
- #include <QJsonDocument>
- #include <QJsonObject>
- #include <QJsonArray>
- #include <QFileInfo>
- #include <QVBoxLayout>
-
- PLCDocument::PLCDocument(QWidget *parent)
- : BaseDocument(PLC, parent)
- {
- // 创建绘图场景
- m_scene = new QGraphicsScene(this);
- m_scene->setSceneRect(0, 0, 800, 600);
-
- // 创建网格背景
- createGridBackground();
-
- // 创建视图
- m_view = new QGraphicsView(m_scene, this);
- m_view->setRenderHint(QPainter::Antialiasing);
- m_view->setDragMode(QGraphicsView::RubberBandDrag);
-
- // 布局(让视图占满文档区域)
- auto layout = new QVBoxLayout(this);
- layout->setContentsMargins(0, 0, 0, 0);
- layout->addWidget(m_view);
- setLayout(layout);
- }
-
- PLCDocument::~PLCDocument()
- {
- // 场景和视图由Qt自动销毁
- }
-
- QString PLCDocument::title() const {
- return "PLC文档";
- }
-
- void PLCDocument::createGridBackground()
- {
- // 创建网格图案
- createGridPattern();
-
- // 设置场景背景
- QBrush gridBrush(m_gridPattern);
- m_scene->setBackgroundBrush(gridBrush);
- }
-
- void PLCDocument::createGridPattern()
- {
- // 网格大小
- const int size = m_gridSize;
-
- // 创建网格图案
- m_gridPattern = QPixmap(size * 2, size * 2);
- m_gridPattern.fill(Qt::white);
-
- QPainter painter(&m_gridPattern);
- painter.setPen(QPen(QColor(220, 220, 220), 1));
-
- // 绘制网格线
- painter.drawLine(0, size, size * 2, size); // 水平线
- painter.drawLine(size, 0, size, size * 2); // 垂直线
-
- // 绘制网格交点
- painter.setPen(QPen(QColor(180, 180, 180), 1));
- painter.drawPoint(0, 0);
- painter.drawPoint(size, size);
- painter.drawPoint(0, size * 2);
- painter.drawPoint(size * 2, 0);
- painter.drawPoint(size * 2, size * 2);
- }
-
- bool PLCDocument::saveToFile(const QString &filePath)
- {
-
- }
-
- bool PLCDocument::loadFromFile(const QString &filePath)
- {
-
- }
|