|
- #include "plceditorwidget.h"
- #include "plcwidgetfactory.h"
- #include <QHBoxLayout>
- #include <QGraphicsScene>
- #include <QGraphicsView>
-
- PlcEditorWidget::PlcEditorWidget(QWidget* parent)
- : QWidget(parent)
- {
- QHBoxLayout* layout = new QHBoxLayout(this);
-
- // 工具栏初始化
- plcToolbar = new QListWidget(this);
- plcToolbar->addItem("常开");
- plcToolbar->addItem("常闭");
- plcToolbar->addItem("线圈");
- plcToolbar->addItem("比较");
- plcToolbar->setFixedWidth(100);
-
- // === 画布(场景+视图)修复配置 ===
- plcScene = new QGraphicsScene(this);
- // 1. 设置明确的场景边界
- plcScene->setSceneRect(0, 0, 1000, 800);
-
- plcEditArea = new QGraphicsView(plcScene, this);
- // 2. 禁用视图自身的拖拽模式
- plcEditArea->setDragMode(QGraphicsView::NoDrag);
- // 3. 禁用滚动条(可选)
- plcEditArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
- plcEditArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
- // 4. 确保坐标1:1映射
- plcEditArea->setTransform(QTransform());
- plcEditArea->setResizeAnchor(QGraphicsView::NoAnchor);
-
- layout->addWidget(plcToolbar);
- layout->addWidget(plcEditArea);
-
- connect(plcToolbar, &QListWidget::itemClicked,
- this, &PlcEditorWidget::onToolbarClicked);
- }
-
- void PlcEditorWidget::onToolbarClicked(QListWidgetItem* item) {
- QString type = item->text();
- auto controlItem = PlcWidgetFactory::createItem(type);
- if (controlItem) {
- controlItem->setPos(50, 50); // 固定初始位置
- plcScene->addItem(controlItem);
- }
- }
|