|
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
-
- MainWindow::MainWindow(QWidget *parent)
- : QMainWindow(parent)
- , ui(new Ui::MainWindow)
- ,canDrawCircle(false)
- ,canDrawRectangle(false)
- {
- ui->setupUi(this);
- scene = new QGraphicsScene(this);
- ui->graphicsView_2->setScene(scene);
- connect(ui->treeWidget_2, &QTreeWidget::itemClicked, this, &MainWindow::onHmiItemClicked);
- ui-> graphicsView_2->viewport()->installEventFilter(this);
- addDockWidget(Qt::BottomDockWidgetArea, ui->dockWidget_3);//将dockWidget_3添加到主窗口的下方
-
- QList<QTreeWidgetItem *> items = ui->treeWidget_2->findItems("指示灯", Qt::MatchExactly);
- for (QTreeWidgetItem *item : items) {
- item->setIcon(0, QIcon("C:/Users/admin/Desktop/T-常开触点-01.png"));
- }
- }
-
- MainWindow::~MainWindow()
- {
- delete ui;
- }
-
- void MainWindow::onHmiItemClicked(QTreeWidgetItem *item){
- if (item->text(0) == "指示灯")
- {
- canDrawCircle = true;
- canDrawRectangle = false;
- }
- else if(item->text(0) == "按钮")
- {
- canDrawCircle=false;
- canDrawRectangle = true;//如果点击的是按钮,则不允许绘制灯
- }
- else {
- canDrawRectangle = false;//如果点击的是灯,则不允许绘制按钮
- canDrawCircle = false;
- }
- }
- bool MainWindow::eventFilter(QObject *obj, QEvent *event)
- {
- if (obj == ui->graphicsView_2->viewport() && event->type() == QEvent::MouseButtonPress) {
- QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
- if (mouseEvent->button() == Qt::LeftButton) {
- // 获取点击的场景坐标
- if (canDrawCircle)
- {
- QPointF scenePos = ui->graphicsView_2->mapToScene(mouseEvent->pos());// 在点击位置绘制一个指示灯
- scene->addEllipse(scenePos.x(), scenePos.y(), 50, 50, QPen(Qt::black), QBrush(Qt::blue));
- }
- else if (canDrawRectangle)
- {
- QPointF scenePos = ui->graphicsView_2->mapToScene(mouseEvent->pos());//在点击位置绘制一个按钮
- scene->addRect(scenePos.x(), scenePos.y(), 50, 50, QPen(Qt::black), QBrush(Qt::blue));
- }
- QTreeWidgetItem *selectedItem = ui->treeWidget_2->currentItem();
- if (selectedItem)
- {
- selectedItem->setSelected(false);//取消选中当前项目
- }
- canDrawCircle = false;
- canDrawRectangle = false;
- return true;
- }
- return QMainWindow::eventFilter(obj, event);
- }
- }
|