Merge branch 'master' of github.com:w-mj/DataStructureProject
This commit is contained in:
commit
31702e05db
4 files changed
+94
-77
No files matched your search
+79
-76
@@ -14,32 +14,32 @@
|
||||
|
||||
ParkingSpaceWidget::ParkingSpaceWidget(ParkingLotWidget* parent, const QString &dir): QWidget(parent)
|
||||
{
|
||||
direction d = {};
|
||||
const char c = dir.at(0).unicode();
|
||||
switch (c)
|
||||
{
|
||||
case 'N':d = N; break;
|
||||
case 'E':d = E; break;
|
||||
case 'W':d = W; break;
|
||||
case 'S':d = S; break;
|
||||
default: qDebug() << this->objectName() << "错误的方向";
|
||||
}
|
||||
this->dir = d;
|
||||
switch (this->dir)
|
||||
{
|
||||
case N:
|
||||
case S:
|
||||
resize(40, 60);
|
||||
setMinimumSize(40, 60);
|
||||
setMaximumSize(40, 60);
|
||||
break;
|
||||
case E:
|
||||
case W:
|
||||
resize(60, 40);
|
||||
setMinimumSize(60, 40);
|
||||
setMaximumSize(60, 40);
|
||||
break;
|
||||
}
|
||||
direction d = {};
|
||||
const char c = dir.at(0).unicode();
|
||||
switch (c)
|
||||
{
|
||||
case 'N':d = N; break;
|
||||
case 'E':d = E; break;
|
||||
case 'W':d = W; break;
|
||||
case 'S':d = S; break;
|
||||
default: qDebug() << this->objectName() << "错误的方向";
|
||||
}
|
||||
this->dir = d;
|
||||
switch (this->dir)
|
||||
{
|
||||
case N:
|
||||
case S:
|
||||
resize(40, 60);
|
||||
setMinimumSize(40, 60);
|
||||
setMaximumSize(40, 60);
|
||||
break;
|
||||
case E:
|
||||
case W:
|
||||
resize(60, 40);
|
||||
setMinimumSize(60, 40);
|
||||
setMaximumSize(60, 40);
|
||||
break;
|
||||
}
|
||||
number = parent->addSpace(this);
|
||||
setToolTip(QString::number(number));
|
||||
QObject::connect(parent, &ParkingLotWidget::showMargain, [this](bool b){
|
||||
@@ -51,25 +51,25 @@ ParkingSpaceWidget::ParkingSpaceWidget(ParkingLotWidget* parent, const QString &
|
||||
|
||||
QBoxLayout *ParkingSpaceWidget::makeParkingSapceGroup(ParkingLotWidget* parent, const QString& dir, int n, const QString & expend)
|
||||
{
|
||||
QBoxLayout *layout;
|
||||
if (expend == "down")
|
||||
layout = new QVBoxLayout();
|
||||
else
|
||||
layout = new QHBoxLayout();
|
||||
for (int i = 0; i < n; i++)
|
||||
{
|
||||
ParkingSpaceWidget *pk = new ParkingSpaceWidget(parent, dir);
|
||||
layout->addWidget(pk);
|
||||
}
|
||||
layout->addStretch(); // 居上或居左对齐
|
||||
layout->setMargin(0);
|
||||
layout->setSpacing(0);
|
||||
return layout;
|
||||
QBoxLayout *layout;
|
||||
if (expend == "down")
|
||||
layout = new QVBoxLayout();
|
||||
else
|
||||
layout = new QHBoxLayout();
|
||||
for (int i = 0; i < n; i++)
|
||||
{
|
||||
ParkingSpaceWidget *pk = new ParkingSpaceWidget(parent, dir);
|
||||
layout->addWidget(pk);
|
||||
}
|
||||
layout->addStretch(); // 居上或居左对齐
|
||||
layout->setMargin(0);
|
||||
layout->setSpacing(0);
|
||||
return layout;
|
||||
}
|
||||
|
||||
void ParkingSpaceWidget::paintEvent(QPaintEvent *)
|
||||
{
|
||||
QPainter painter(this);
|
||||
QPainter painter(this);
|
||||
painter.setPen(Qt::black);
|
||||
painter.drawText(20, 25, QString::number(number));
|
||||
QString p;
|
||||
@@ -77,27 +77,27 @@ void ParkingSpaceWidget::paintEvent(QPaintEvent *)
|
||||
p.append(",");
|
||||
p.append(QString::number(pos().y()));
|
||||
|
||||
painter.setPen(Qt::white);
|
||||
painter.setBrush(Qt::white);
|
||||
painter.setPen(Qt::white);
|
||||
painter.setBrush(Qt::white);
|
||||
//painter.save();
|
||||
painter.translate(30, 20);
|
||||
switch (dir) {
|
||||
case E:
|
||||
break;
|
||||
case S:
|
||||
painter.rotate(270);
|
||||
break;
|
||||
case W:
|
||||
painter.rotate(180);
|
||||
break;
|
||||
case N:
|
||||
painter.rotate(90);
|
||||
break;
|
||||
}
|
||||
painter.translate(-30, -20);
|
||||
painter.drawRect(0, 0, 60, 5);
|
||||
painter.drawRect(0, 5, 10, 35);
|
||||
painter.drawRect(10, 35, 50, 5);
|
||||
painter.translate(30, 20);
|
||||
switch (dir) {
|
||||
case E:
|
||||
break;
|
||||
case S:
|
||||
painter.rotate(270);
|
||||
break;
|
||||
case W:
|
||||
painter.rotate(180);
|
||||
break;
|
||||
case N:
|
||||
painter.rotate(90);
|
||||
break;
|
||||
}
|
||||
painter.translate(-30, -20);
|
||||
painter.drawRect(0, 0, 60, 5);
|
||||
painter.drawRect(0, 5, 10, 35);
|
||||
painter.drawRect(10, 35, 50, 5);
|
||||
if (m_showMargin) {
|
||||
painter.setPen(Qt::blue);
|
||||
painter.setBrush(Qt::NoBrush);
|
||||
@@ -141,24 +141,27 @@ ParkingSpaceWidget::direction ParkingSpaceWidget::getDir() const
|
||||
return dir;
|
||||
}
|
||||
|
||||
void ParkingSpaceWidget::mouseDoubleClickEvent(QMouseEvent *)
|
||||
void ParkingSpaceWidget::mouseDoubleClickEvent(QMouseEvent *event)
|
||||
{
|
||||
if (REQUIRE_PREMISSION) {
|
||||
Log::i("请求权限成功");
|
||||
if (m_situation == banned) {
|
||||
qDebug() << "禁用解除" << number;
|
||||
emit ban(false, number);
|
||||
m_situation = free;
|
||||
} else if (m_situation == free) {
|
||||
qDebug() << "禁用车位" << number;
|
||||
emit ban(true, number);
|
||||
m_situation = banned;
|
||||
if(event->button()==Qt::LeftButton)
|
||||
{
|
||||
if (REQUIRE_PREMISSION) {
|
||||
Log::i("请求权限成功");
|
||||
if (m_situation == banned) {
|
||||
qDebug() << "禁用解除" << number;
|
||||
emit ban(false, number);
|
||||
m_situation = free;
|
||||
} else if (m_situation == free) {
|
||||
qDebug() << "禁用车位" << number;
|
||||
emit ban(true, number);
|
||||
m_situation = banned;
|
||||
} else {
|
||||
qDebug() << "车位已被占用";
|
||||
}
|
||||
update();
|
||||
} else {
|
||||
qDebug() << "车位已被占用";
|
||||
Log::i("请求权限失败");
|
||||
}
|
||||
update();
|
||||
} else {
|
||||
Log::i("请求权限失败");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include <QWidget>
|
||||
#include <QLayout>
|
||||
#include <QLabel>
|
||||
#include <QMouseEvent>
|
||||
#include "ParkingLotWidget.h"
|
||||
class ParkingLotWidget;
|
||||
|
||||
|
||||
@@ -22,7 +22,8 @@ Car::Car(ParkingLotManager * manager, QGraphicsItem *parent, int dir, Car::Color
|
||||
QGraphicsPixmapItem(parent),
|
||||
posAni(new QPropertyAnimation(this,"m_pos")),
|
||||
m_target(PathPoint(this->pos(),this->rotation())),
|
||||
m_current(PathPoint(this->pos(),this->rotation()))
|
||||
m_current(PathPoint(this->pos(),this->rotation())),
|
||||
crash(true)
|
||||
{
|
||||
m_manager = manager;
|
||||
m_pos = this->pos();
|
||||
@@ -290,9 +291,18 @@ void Car::leaveProbability(int p)
|
||||
emit out(this, -1);
|
||||
}
|
||||
|
||||
|
||||
void Car::setPlateNumber(const QString &number) {
|
||||
this->m_number = number;
|
||||
}
|
||||
|
||||
void Car::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
|
||||
{
|
||||
if(event->button()==Qt::LeftButton)
|
||||
emit out(this,-1);
|
||||
event->accept();
|
||||
}
|
||||
|
||||
int Car::getTargetFloor() const
|
||||
{
|
||||
return targetFloor;
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include <QPropertyAnimation>
|
||||
#include <QObject>
|
||||
#include <QTime>
|
||||
#include <QGraphicsSceneMouseEvent>
|
||||
#include "path.h"
|
||||
#include "parkingLotManager.h"
|
||||
class ParkingLotManager;
|
||||
@@ -75,6 +76,8 @@ public:
|
||||
void leaveProbability(int p);
|
||||
void setPlateNumber(const QString &number);
|
||||
|
||||
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event);
|
||||
|
||||
private:
|
||||
Status m_status;
|
||||
Color m_color; //车身颜色 N为0, 顺时针递增
|
||||
|
||||
Reference in new issue
Block a user