QT&1 仿真停车实验之绝对坐标位置移动

UI设计简易停车场通过绝对坐标控制小车移动

效果图
QT&1 仿真停车实验之绝对坐标位置移动
核心代码
通过坐标控制小车移动函数

//控制小车驶入A车位的函数
void MainWindow::runA(){
    //向下
    for(int i=ui->label->y();i<570;++i){
        ui->label->setGeometry(ui->label->x(),i,
                               ui->label->width(),
                               ui->label->height());
            sleep(8);
    }
    trans90();
    //向左
    for(int i=ui->label->x(); i>640; --i){
        ui->label->setGeometry(i,ui->label->y(),
                                 ui->label->width(),
                                 ui->label->height());
            sleep(8);
        }
    trans270();
    //向下
    for(int i=ui->label->y();i<650;++i){
        ui->label->setGeometry(ui->label->x(),i,
                               ui->label->width(),
                               ui->label->height());
            sleep(8);
    }
}

//控制小车驶入B车位的函数
void MainWindow::runB(){
    //向下
    for(int i=ui->label->y();i<570;++i){
        ui->label->setGeometry(ui->label->x(),i,
                               ui->label->width(),
                               ui->label->height());
            sleep(8);
    }
    trans90();
    //向左
    for(int i=ui->label->x(); i>710; --i){
        ui->label->setGeometry(i,ui->label->y(),
                                 ui->label->width(),
                                 ui->label->height());
            sleep(8);
        }
    trans270();
    //向下
    for(int i=ui->label->y();i<650;++i){
        ui->label->setGeometry(ui->label->x(),i,
                               ui->label->width(),
                               ui->label->height());
            sleep(8);
    }
}

//控制小车驶入C车位的函数
void MainWindow::runC(){
    //向下
    for(int i=ui->label->y();i<570;++i){
        ui->label->setGeometry(ui->label->x(),i,
                               ui->label->width(),
                               ui->label->height());
            sleep(8);
    }
    trans90();
    //向左
    for(int i=ui->label->x(); i>780; --i){
        ui->label->setGeometry(i,ui->label->y(),
                                 ui->label->width(),
                                 ui->label->height());
            sleep(8);
        }
    trans270();
    //向下
    for(int i=ui->label->y();i<650;++i){
        ui->label->setGeometry(ui->label->x(),i,
                               ui->label->width(),
                               ui->label->height());
            sleep(8);
    }
}

//控制小车离开停车场的函数
void MainWindow::back(){
    //向上
    for(int i=ui->label->y();i>570;--i){
        ui->label->setGeometry(ui->label->x(),i,
                               ui->label->width(),
                               ui->label->height());
            sleep(8);
    }
    trans90();
    //向左
    for(int i=ui->label->x(); i>210; --i){
    ui->label->setGeometry(i,ui->label->y(),
                             ui->label->width(),
                             ui->label->height());
        sleep(8);
    }
    trans90();
    //向上
    for(int i=ui->label->y();i>20;--i){
        ui->label->setGeometry(ui->label->x(),i,
                               ui->label->width(),
                               ui->label->height());
            sleep(8);
    }
    trans90();
    //向右
    for(int i=ui->label->x(); i<1440; ++i){
        ui->label->setGeometry(i,ui->label->y(),
                                 ui->label->width(),
                                 ui->label->height());
            sleep(8);
        }
    trans90();
}

延时函数 (调整小车速度)

//延时函数控制小车速度
void MainWindow::sleep(unsigned int msec){

    QTime newTime = QTime::currentTime().addMSecs(msec);
    while(QTime::currentTime() < newTime)
         QCoreApplication::processEvents(QEventLoop::AllEvents,100);
}

转向函数

//逆时针90°转向函数
void MainWindow::trans270()
{
  ui->label->setGeometry(ui->label->x(),ui->label->y(),ui->label->height(),ui->label->width());//将lable的height与width调换。使得转向后图片可以完整显示
  QPixmap pixmap(":/picture/xia.png");
  matrix.rotate(270.0);//旋转角度
  ui->label->setPixmap(pixmap.transformed(matrix,Qt::SmoothTransformation));      //图片逆时针旋转90度
}

//顺时针90°转向函数
void MainWindow::trans90()
{
  ui->label->setGeometry(ui->label->x(),ui->label->y(),ui->label->height(),ui->label->width());//将lable的height与width调换。使得转向后图片可以完整显示
  QPixmap pixmap(":/picture/xia.png");
  matrix.rotate(90.0);//旋转角度
  ui->label->setPixmap(pixmap.transformed(matrix,Qt::SmoothTransformation));      //图片顺时针旋转90度
}

完整代码
链接:https://pan.baidu.com/s/1uxtiM79k_1Ak-0yDC0Rxvg
提取码:hyrd