diff --git a/ParkingSpaceWidget.cpp b/ParkingSpaceWidget.cpp index 60071d4..7f0cbc1 100644 --- a/ParkingSpaceWidget.cpp +++ b/ParkingSpaceWidget.cpp @@ -61,7 +61,7 @@ void ParkingSpaceWidget::paintEvent(QPaintEvent *) { QPainter painter(this); painter.setPen(Qt::black); - // painter.drawText(20, 25, QString::number(number)); + painter.drawText(20, 25, QString::number(number)); QString p; p.append(QString::number(pos().x())); p.append(","); @@ -69,7 +69,7 @@ void ParkingSpaceWidget::paintEvent(QPaintEvent *) painter.setPen(Qt::white); painter.setBrush(Qt::white); - painter.save(); + //painter.save(); painter.translate(30, 20); switch (dir) { case E: @@ -92,9 +92,9 @@ void ParkingSpaceWidget::paintEvent(QPaintEvent *) painter.setBrush(Qt::NoBrush); painter.drawRect(0, 0, this->width() - 1, this->height() - 1);*/ - painter.restore(); - painter.setPen(Qt::black); - painter.drawText(0, 25, p); + //painter.restore(); + //painter.setPen(Qt::black); + //painter.drawText(0, 25, p); painter.end(); } diff --git a/Road.cpp b/Road.cpp index beb6f74..cfac996 100644 --- a/Road.cpp +++ b/Road.cpp @@ -44,9 +44,9 @@ void Road::paintEvent(QPaintEvent * event) y += 50; } } - painter.setPen(Qt::red); - painter.setBrush(Qt::NoBrush); - painter.drawRect(0, 0, width() - 1, height() - 1); + //painter.setPen(Qt::red); + //painter.setBrush(Qt::NoBrush); + //painter.drawRect(0, 0, width() - 1, height() - 1); } Road::~Road() diff --git a/monitor.cpp b/monitor.cpp index 927c838..06a4d83 100644 --- a/monitor.cpp +++ b/monitor.cpp @@ -31,7 +31,3 @@ Monitor::~Monitor() { delete ui; } - - - - diff --git a/parkingLotManager.cpp b/parkingLotManager.cpp index c8fd9e1..9af4e0b 100644 --- a/parkingLotManager.cpp +++ b/parkingLotManager.cpp @@ -90,7 +90,7 @@ void ParkingLotManager::drawPath(uint n1, uint n2) { Path *p = m_graph[1]->finaPath(ParkingLotGraph::Node::Type::space, n1, ParkingLotGraph::Node::Type::space, n2); - for(uint i = 1; i < p->size(); i++) { + for(int i = 1; i < p->pointsCount(); i++) { QLineF line(p->getPoint(i-1).point, p->getPoint(i).point); m_scene->addLine(line); } diff --git a/parkinglotgraph.cpp b/parkinglotgraph.cpp index b1fec40..3d5dba9 100644 --- a/parkinglotgraph.cpp +++ b/parkinglotgraph.cpp @@ -23,7 +23,7 @@ QPoint toCenter(const QWidget* w) { return p; } -ParkingLotGraph::ParkingLotGraph(const ParkingLotWidget* pk) +ParkingLotGraph::ParkingLotGraph(const ParkingLotWidget* pkl): pk(pkl) { QVector spaces = pk->getSpaceList(); QVector roads = pk->getRoadList(); @@ -197,8 +197,38 @@ Path *ParkingLotGraph::finaPath(ParkingLotGraph::Node::Type t1, uint n1, Parking uint n = id2; while (n != id1) { path->addPoint(0, *(new PathPoint(QPointF(m_all[n]->data), 0))); + QPoint tp; + if (m_all[n]->type == Node::Type::space) { + ParkingSpaceWidget* space = pk->getSpaceList().at(m_all[n]->number - 1); + switch (space->getDir()) { + case ParkingSpaceWidget::direction::E: + case ParkingSpaceWidget::direction::W: + tp.setX(m_all[prev[n]]->data.x()); + tp.setY(m_all[n]->data.y()); + break; + case ParkingSpaceWidget::direction::N: + case ParkingSpaceWidget::direction::S: + tp.setX(m_all[n]->data.x()); + tp.setY(m_all[prev[n]]->data.y()); + break; + } + } else if (m_all[n]->type == Node::Type::road) { + Road* road = pk->getRoadList().at(m_all[n]->number - 1); + switch(road->getDir()) { + case Road::direction::horizontal: + tp.setX(m_all[prev[n]]->data.x()); + tp.setY(m_all[n]->data.y()); + break; + case Road::direction::vertical: + tp.setX(m_all[n]->data.x()); + tp.setY(m_all[prev[n]]->data.y()); + break; + } + } + path->addPoint(0, PathPoint(QPointF(tp), 0)); n = prev[n]; } + path->addPoint(0, PathPoint(QPointF(m_all[n]->data), 0)); // 把第一个点也加进去 return path; } diff --git a/parkinglotgraph.h b/parkinglotgraph.h index 1ade5ad..79ca537 100644 --- a/parkinglotgraph.h +++ b/parkinglotgraph.h @@ -24,7 +24,7 @@ public: QVector weight; uint getId() const; }; - ParkingLotGraph(const ParkingLotWidget*); + ParkingLotGraph(const ParkingLotWidget*pkl); Node* addNode(QPoint p, Node::Type t, uint n) { Node* no = new Node(p, t, n, m_all.size()); m_all.push_back(no); @@ -37,6 +37,7 @@ private: QVector m_all; QVector m_spaceList; QVector m_roadNodeList; + const ParkingLotWidget* pk; }; #endif // PARKINGLOTGRAPH_H