From fe01d5e215c46ca7c539b309df44220d0c892be0 Mon Sep 17 00:00:00 2001 From: wmj Date: Sat, 16 Dec 2017 22:10:37 +0800 Subject: [PATCH] add number of parking space --- DataStructureProject.pro | 4 ++-- ParkingLotWidget.cpp | 12 +++++++++--- ParkingLotWidget.h | 12 ++++++++++-- ParkingSpaceWidget.cpp | 8 ++++++-- ParkingSpaceWidget.h | 14 ++++++++++---- 5 files changed, 37 insertions(+), 13 deletions(-) diff --git a/DataStructureProject.pro b/DataStructureProject.pro index 4740c4b..cf5256a 100644 --- a/DataStructureProject.pro +++ b/DataStructureProject.pro @@ -36,7 +36,7 @@ SOURCES += \ monitor.cpp \ parkinglot.cpp \ ParkingLotWidget.cpp \ - ParkingSpaceInfo.cpp \ + ParkingSpaceWidget.cpp \ Road.cpp HEADERS += \ @@ -49,7 +49,7 @@ HEADERS += \ monitor.h \ parkinglot.h \ ParkingLotWidget.h \ - ParkingSpaceInfo.h \ + ParkingSpaceWidget.h \ Road.h FORMS += \ diff --git a/ParkingLotWidget.cpp b/ParkingLotWidget.cpp index d36e062..d1b45d9 100644 --- a/ParkingLotWidget.cpp +++ b/ParkingLotWidget.cpp @@ -1,12 +1,12 @@ #include "ParkingLotWidget.h" - +#include "ParkingSpaceWidget.h" #include #include #include #include #include "Road.h" -#include "ParkingSpaceWidget.h" #include +#include ParkingLotWidget::ParkingLotWidget(QWidget *parent, const QString& xml) : QWidget(parent) { @@ -18,7 +18,13 @@ ParkingLotWidget::ParkingLotWidget(QWidget *parent, const QString& xml) : QWidge void ParkingLotWidget::paintEvent(QPaintEvent * event) { - + event->ignore(); +} + +int ParkingLotWidget::addSpace(ParkingSpaceWidget *sp) +{ + m_spaceList.push_back(sp); + return m_spaceList.size(); } ParkingLotWidget::~ParkingLotWidget() diff --git a/ParkingLotWidget.h b/ParkingLotWidget.h index ac54e4e..24eb3ac 100644 --- a/ParkingLotWidget.h +++ b/ParkingLotWidget.h @@ -1,18 +1,26 @@ -#pragma once +#ifndef PARKING_LOT_WIDGET +#define PARKING_LOT_WIDGET #include #include #include #include +#include +#include "ParkingSpaceWidget.h" +class ParkingSpaceWidget; // 先声明类,防止循环include + class ParkingLotWidget: public QWidget { Q_OBJECT public: explicit ParkingLotWidget(QWidget* parent, const QString& xml); void paintEvent(QPaintEvent* event) override; + int addSpace(ParkingSpaceWidget* sp); ~ParkingLotWidget(); private: - void parse_xml(const QString& xml); + std::vector m_spaceList; + void parse_xml(const QString& xml); QBoxLayout *parseLayout(const QDomElement& element); QBoxLayout *layout = nullptr; }; +#endif diff --git a/ParkingSpaceWidget.cpp b/ParkingSpaceWidget.cpp index 77507ea..4f35089 100644 --- a/ParkingSpaceWidget.cpp +++ b/ParkingSpaceWidget.cpp @@ -1,8 +1,9 @@ #include "ParkingSpaceWidget.h" #include #include +#include "ParkingLotWidget.h" -ParkingSpaceWidget::ParkingSpaceWidget(QWidget* parent, const QString &dir) +ParkingSpaceWidget::ParkingSpaceWidget(ParkingLotWidget* parent, const QString &dir): QWidget(parent) { direction d = {}; const char c = dir.at(0).unicode(); @@ -30,9 +31,10 @@ ParkingSpaceWidget::ParkingSpaceWidget(QWidget* parent, const QString &dir) setMaximumSize(60, 40); break; } + number = parent->addSpace(this); } -QBoxLayout *ParkingSpaceWidget::makeParkingSapceGroup(QWidget* parent, const QString& dir, int n, const QString & expend) +QBoxLayout *ParkingSpaceWidget::makeParkingSapceGroup(ParkingLotWidget* parent, const QString& dir, int n, const QString & expend) { QBoxLayout *layout; if (expend == "down") @@ -53,6 +55,8 @@ QBoxLayout *ParkingSpaceWidget::makeParkingSapceGroup(QWidget* parent, const QSt void ParkingSpaceWidget::paintEvent(QPaintEvent * event) { QPainter painter(this); + painter.setPen(Qt::black); + painter.drawText(20, 25, QString::number(number)); painter.setPen(Qt::white); painter.setBrush(Qt::white); painter.translate(30, 20); diff --git a/ParkingSpaceWidget.h b/ParkingSpaceWidget.h index fd9451c..2c2f4c2 100644 --- a/ParkingSpaceWidget.h +++ b/ParkingSpaceWidget.h @@ -1,16 +1,22 @@ -#pragma once +#ifndef PARKING_SPACE_WIDGET +#define PARKING_SPACE_WIDGET #include #include +#include "ParkingLotWidget.h" +class ParkingLotWidget; + class ParkingSpaceWidget: public QWidget { Q_OBJECT public: enum direction{N, S, E, W}; - ParkingSpaceWidget(QWidget* parent, const QString &dir); - static QBoxLayout* makeParkingSapceGroup(QWidget* parent, const QString& dir, int n, const QString &expend); - void paintEvent(QPaintEvent* event) override; + ParkingSpaceWidget(ParkingLotWidget* parent, const QString &dir); + static QBoxLayout* makeParkingSapceGroup(ParkingLotWidget* parent, const QString& dir, int n, const QString &expend); + void paintEvent(QPaintEvent* event) override; ~ParkingSpaceWidget(); private: + int number; direction dir; }; +#endif