QT&1 仿真停车实验之绝对坐标位置移动
UI设计简易停车场通过绝对坐标控制小车移动
效果图
核心代码
通过坐标控制小车移动函数
//控制小车驶入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