#include "plcdocument.h" #include #include #include #include #include #include #include #include #include #include #include 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) { }