|
- #include "plceditor.h"
- #include <QPainter>
- #include <QPen>
- #include <QBrush>
-
- PLCElement::PLCElement(Type type, QGraphicsItem *parent)
- : QGraphicsRectItem(parent), type(type)
- {
- setRect(0, 0, 60, 30);
- setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
- }
-
- void PLCElement::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) {
- Q_UNUSED(option);
- Q_UNUSED(widget);
-
- // 绘制基本形状
- painter->setPen(QPen(Qt::black, 2));
- painter->setBrush(QBrush(Qt::white));
- painter->drawRect(rect());
-
- // 绘制触点类型
- painter->setPen(QPen(Qt::red, 2));
- if (type == NormallyOpen) {
- // 常开触点
- painter->drawLine(10, 15, 25, 15);
- painter->drawLine(35, 15, 50, 15);
- painter->drawLine(25, 10, 35, 20);
- } else {
- // 常闭触点
- painter->drawLine(10, 15, 25, 15);
- painter->drawLine(35, 15, 50, 15);
- painter->drawLine(25, 20, 35, 10);
- painter->drawLine(25, 10, 35, 20);
- }
- }
-
- PLCEditor::PLCEditor(QWidget *parent)
- : QWidget(parent), elementCount(0)
- {
- // 创建布局
- QVBoxLayout* layout = new QVBoxLayout(this);
-
- // 创建图形场景和视图
- scene = new QGraphicsScene(this);
- scene->setSceneRect(0, 0, 800, 600);
- scene->setBackgroundBrush(Qt::lightGray);
-
- view = new QGraphicsView(scene, this);
- view->setRenderHint(QPainter::Antialiasing);
- layout->addWidget(view);
- }
-
- void PLCEditor::onNormallyOpen() {
- // 创建新的常开触点
- PLCElement* element = new PLCElement(PLCElement::NormallyOpen);
- scene->addItem(element);
-
- // 放置在不同位置
- element->setPos(50 + (elementCount % 10) * 80, 50 + (elementCount / 10) * 50);
- elementCount++;
- }
-
- void PLCEditor::onNormallyClosed() {
- // 创建新的常闭触点
- PLCElement* element = new PLCElement(PLCElement::NormallyClosed);
- scene->addItem(element);
-
- // 放置在不同位置
- element->setPos(50 + (elementCount % 10) * 80, 50 + (elementCount / 10) * 50);
- elementCount++;
- }
|