#include "parkingLotItem.h" #include "ParkingLotWidget.h" #include #include ParkingLotItem::ParkingLotItem(QGraphicsPixmapItem *parent): QGraphicsPixmapItem(parent) { // 找到xml文件路径 QString filePath = __FILE__; QStringList list = filePath.split("\\"); QString result; for (int i = 0; i < list.size() - 1; i++) result.append(list.at(i)).append("\\"); QStringList l = {"parkinglot_b1.xml", "parkinglot_f1.xml"}; for (int i = 0; i < 2; i++) { QString t(result); m_xml_path.push_back(t.append(l.at(i))); } m_cars.resize(m_num_of_layer); // 停在每一层的车 m_waitting.resize(m_num_of_entry); // 在每个入口等待的车 for (uint i = 0; i < m_num_of_layer; i++) { ParkingLotWidget* widget = new ParkingLotWidget(Q_NULLPTR, m_xml_path.at(i)); // 生成一个widget m_pixmap.push_back(new QPixmap(widget->size())); // 创建一层的pixmap qDebug() << "widget size x=" << widget->size().width() << " y=" <size().height(); widget->render(m_pixmap[i]); // 渲染pixmap m_max_capacity.push_back(widget->getCapacity()); // 获得这一层的最大容量 m_cars[i].resize(m_max_capacity.at(i)); // 初始化一层的车位 m_name.push_back(widget->getName()); // 这一层的名字 m_num_of_cars.push_back(0); // 初始停车数量为0 delete widget; // 删除widget QPainter painter(m_pixmap[i]); painter.setPen(Qt::red); painter.drawRect(0, 0, m_pixmap[i]->width() - 1, m_pixmap[i]->height() - 1); } showParkingLot(1); } void ParkingLotItem::showParkingLot(uint pos) { if (pos >= m_num_of_layer) { qDebug() << "ParkingLotItem: 层数错误"; return; } setPixmap(*m_pixmap.at(pos)); }