painter.setBrush(QBrush(Qt::blue,Qt::SolidPattern)); painter.drawRect(QRect(_endx*25+200-(nodeSpacing-nodeSize)/2,(_endy+1)*25+50-(nodeSpacing-nodeSize)/2,25,25));,改爲插入圖片
时间: 2023-07-16 17:16:15 浏览: 47
如果要插入图片,您可以使用QPixmap类加载图片,然后在绘图事件中使用QPainter类的drawPixmap方法绘制图片。以下是一个示例代码:
```
QPixmap image("your_image_path.jpg");
painter.drawPixmap(QRect(_endx*25+200-(nodeSpacing-nodeSize)/2,(_endy+1)*25+50-(nodeSpacing-nodeSize)/2,25,25), image);
```
注意,这里的QRect参数定义了图片的位置和大小。您需要根据实际需要进行调整。
相关问题
painter.setBrush(QBrush(Qt::color(220, 220, 220)));報錯
这段代码报错的原因可能是Qt中没有这样的颜色定义方式。正确的写法应该是:
```
painter.setBrush(QBrush(QColor(220, 220, 220)));
```
或者使用Qt中已经定义好的颜色:
```
painter.setBrush(Qt::lightGray);
```
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的之間繪製直綫
你的代码中,当_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()`方法在当前格子的中心绘制了一条水平直线,然后又恢复了原来的画刷,并绘制了蓝色的矩形。你可以根据需要修改画笔的颜色、粗细和样式。