Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

89 lignes
2.0 KiB

  1. #include "plcdocument.h"
  2. #include <QGraphicsScene>
  3. #include <QGraphicsView>
  4. #include <QPainter>
  5. #include <QBrush>
  6. #include <QPen>
  7. #include <QFile>
  8. #include <QJsonDocument>
  9. #include <QJsonObject>
  10. #include <QJsonArray>
  11. #include <QFileInfo>
  12. #include <QVBoxLayout>
  13. PLCDocument::PLCDocument(QWidget *parent)
  14. : BaseDocument(PLC, parent)
  15. {
  16. // 创建绘图场景
  17. m_scene = new QGraphicsScene(this);
  18. m_scene->setSceneRect(0, 0, 800, 600);
  19. // 创建网格背景
  20. createGridBackground();
  21. // 创建视图
  22. m_view = new QGraphicsView(m_scene, this);
  23. m_view->setRenderHint(QPainter::Antialiasing);
  24. m_view->setDragMode(QGraphicsView::RubberBandDrag);
  25. // 布局(让视图占满文档区域)
  26. auto layout = new QVBoxLayout(this);
  27. layout->setContentsMargins(0, 0, 0, 0);
  28. layout->addWidget(m_view);
  29. setLayout(layout);
  30. }
  31. PLCDocument::~PLCDocument()
  32. {
  33. // 场景和视图由Qt自动销毁
  34. }
  35. QString PLCDocument::title() const {
  36. return "PLC文档";
  37. }
  38. void PLCDocument::createGridBackground()
  39. {
  40. // 创建网格图案
  41. createGridPattern();
  42. // 设置场景背景
  43. QBrush gridBrush(m_gridPattern);
  44. m_scene->setBackgroundBrush(gridBrush);
  45. }
  46. void PLCDocument::createGridPattern()
  47. {
  48. // 网格大小
  49. const int size = m_gridSize;
  50. // 创建网格图案
  51. m_gridPattern = QPixmap(size * 2, size * 2);
  52. m_gridPattern.fill(Qt::white);
  53. QPainter painter(&m_gridPattern);
  54. painter.setPen(QPen(QColor(220, 220, 220), 1));
  55. // 绘制网格线
  56. painter.drawLine(0, size, size * 2, size); // 水平线
  57. painter.drawLine(size, 0, size, size * 2); // 垂直线
  58. // 绘制网格交点
  59. painter.setPen(QPen(QColor(180, 180, 180), 1));
  60. painter.drawPoint(0, 0);
  61. painter.drawPoint(size, size);
  62. painter.drawPoint(0, size * 2);
  63. painter.drawPoint(size * 2, 0);
  64. painter.drawPoint(size * 2, size * 2);
  65. }
  66. bool PLCDocument::saveToFile(const QString &filePath)
  67. {
  68. }
  69. bool PLCDocument::loadFromFile(const QString &filePath)
  70. {
  71. }