for(int i=0;i<31;i++) for(int j=0;j<31;j++) { switch(_MAP[i][j]) { case 1://画障礙物 painter.setBrush(QBrush(Qt::gray,Qt::SolidPattern)); painter.drawRect(QRect(i*25+200-(nodeSpacing-nodeSize)/2,(j+1)*25+50-(nodeSpacing-nodeSize)/2,25,25)); break; case 0://画地圖 painter.setBrush(QBrush(QColor(66, 139, 230),Qt::SolidPattern)); painter.drawRect(QRect((i*25+200),(j+1)*25+50,nodeSize,nodeSize)); break; case 2://路線 painter.setBrush(QBrush(Qt::yellow,Qt::SolidPattern)); painter.drawRect(QRect(i*25+200,(j+1)*25+50,nodeSize,nodeSize)); break; case 3://agv painter.drawPixmap(i*25+200-(nodeSpacing-nodeSize)/2,(j+1)*25+50-(nodeSpacing-nodeSize)/2,25,25,QPixmap(":/new/prefix1/agv1.png").scaled(25,25)); case 5://agv模擬直綫路綫 painter.setBrush(QBrush(QColor(66, 139, 230),Qt::SolidPattern)); painter.drawRect(QRect((i*25+200),(j+1)*25+50,nodeSize,nodeSize));,添加代碼,在map值為5的之間繪製直綫
时间: 2023-12-05 08:04:11 浏览: 81
你的代码中,当_MAP[i][j]的值为5时,会绘制一个蓝色的矩形,但是并没有绘制直线。如果你想要在5之间绘制直线,可以添加以下代码:
```cpp
case 5: // agv模拟直线路线
painter.setPen(QPen(QColor(255, 0, 0), 3, Qt::SolidLine)); // 设置画笔颜色、粗细和样式
painter.drawLine(QPointF(i*25+200+nodeSize/2, (j+1)*25+50+nodeSize/2), QPointF((i+1)*25+200-nodeSize/2, (j+1)*25+50+nodeSize/2)); // 绘制直线
painter.setBrush(QBrush(QColor(66, 139, 230),Qt::SolidPattern)); // 恢复原来的画刷
painter.drawRect(QRect((i*25+200),(j+1)*25+50,nodeSize,nodeSize)); // 绘制蓝色矩形
break;
```
这段代码中,我设置了一个红色的画笔,使用`QPainter::drawLine()`方法在当前格子的中心绘制了一条水平直线,然后又恢复了原来的画刷,并绘制了蓝色的矩形。你可以根据需要修改画笔的颜色、粗细和样式。
阅读全文