No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

51 líneas
1.4 KiB

  1. #ifndef BASEDOCUMENT_H
  2. #define BASEDOCUMENT_H
  3. #include <QWidget>
  4. #include <QString>
  5. class BaseDocument : public QWidget
  6. {
  7. Q_OBJECT
  8. public:
  9. enum DocumentType { HMI, PLC };
  10. BaseDocument(DocumentType type, QWidget *parent = nullptr);
  11. virtual ~BaseDocument() = default;
  12. DocumentType type() const;
  13. virtual QString title() const = 0;
  14. virtual QString filePath() const;
  15. virtual void setFilePath(const QString &path);
  16. virtual bool isModified() const;
  17. virtual void setModified(bool modified);
  18. // 保存/加载接口
  19. virtual bool saveToFile(const QString &filePath) = 0;
  20. virtual bool loadFromFile(const QString &filePath) = 0;
  21. // 设置变换矩阵
  22. virtual void setTransform(const QTransform& transform) {
  23. m_transform = transform;
  24. update();
  25. }
  26. // 获取文档内容尺寸(子类需要重写)
  27. virtual QSize getContentSize() const { return QSize(800, 600); } // 默认尺寸
  28. // 重写paintEvent应用变换
  29. // virtual void paintEvent(QPaintEvent *event) override {
  30. // QPainter painter(this);
  31. // painter.setTransform(m_transform);
  32. // // 子类应调用父类的paintEvent? 或者自行绘制
  33. // }
  34. protected:
  35. DocumentType m_type;
  36. QString m_filePath;
  37. bool m_modified = false;
  38. QTransform m_transform;
  39. };
  40. #endif // BASEDOCUMENT_H