qt中,QRect rect(start, end);,用黑色畫出這個矩形
时间: 2024-03-09 07:46:39 浏览: 41
可以使用QPainter类在QWidget或QPixmap上绘制矩形。你可以使用以下代码在QWidget上绘制黑色矩形:
```cpp
QRect rect(start, end);
QPainter painter(this);
painter.setPen(Qt::black);
painter.drawRect(rect);
```
其中,`start`和`end`是定义矩形的两个角点。`setPen()`方法设置了绘制图形时使用的画笔颜色,`drawRect()`方法绘制矩形。这段代码需要在QWidget的paintEvent()函数中调用,以便在需要时进行绘制。
相关问题
QPoint start(agvs[i].current_x*25+200+nodeSize/2, (agvs[i].current_y+1)*25+50+nodeSize/2); if (agvs[i].current_x == next_node->x && next_node->y > agvs[i].current_y)//向下 { QPoint end(next_node->x* 25 + 200 +nodeSize/2, (agvs[i].current_y+1)*25+50+nodeSize/20+16); painter.drawLine(start, end); }, // 畫出地圖 for(int i=0;i<31;i++) for(int j=0;j<31;j++) { switch(_MAP[i][j]) { case 1://画障礙物 painter.setBrush(QBrush(Qt::black,Qt::SolidPattern)); painter.drawRect(QRect((i*25+200),(j+1)*25+50,nodeSize,nodeSize)); break; case 0://画地圖 painter.setPen(QColor(66, 139, 230)); // 设置线条颜色 painter.setBrush(QBrush(QColor(66, 139, 230),Qt::SolidPattern)); painter.drawRect(QRect((i*25+200),(j+1)*25+50,nodeSize,nodeSize));,將地圖上,Qpoint之内的點都變爲紅色
您可以使用以下代码将地图上所有在 `QPoint` 内的点变为红色:
```
QRect rect(start, end); // 创建一个包含起点和终点的矩形
for(int i=0;i<31;i++) {
for(int j=0;j<31;j++) {
QPoint point(i*25+200+nodeSize/2, (j+1)*25+50+nodeSize/2);
if(rect.contains(point)) { // 如果点在矩形内
painter.setPen(QColor(Qt::red)); // 设置线条颜色为红色
painter.setBrush(QBrush(Qt::red, Qt::SolidPattern)); // 设置笔刷颜色为红色
painter.drawRect(QRect((i*25+200),(j+1)*25+50,nodeSize,nodeSize)); // 画一个矩形,颜色为红色
}
}
}
```
这会遍历地图上的所有点,如果该点在 `QPoint` 所确定的矩形内,则将该点颜色设置为红色。请注意,这可能会导致一些障碍物也被涂成红色,因此您可能需要修改该代码以仅在地图上的可通行区域内绘制红色矩形。
QPoint start(agvs[i].current_x25+200, (agvs[i].current_y+1)25+50); QPoint end(next_node->x 25 + 200, next_node->y 25 + 50);,畫出Qpoint,左上角為start和右下角為end的矩形
您可以使用 `QRect` 类来创建一个左上角为 `start` 点,右下角为 `end` 点的矩形。例如:
```
QRect rect(start, end);
```
接下来,您可以使用 `painter.drawRect()` 方法来绘制该矩形:
```
painter.drawRect(rect);
```
这将在 `start` 点和 `end` 点之间绘制一个矩形。如果您想更改矩形的颜色和填充方式,可以使用 `setPen()` 和 `setBrush()` 方法。例如,以下代码将设置矩形的填充颜色为红色:
```
painter.setPen(Qt::NoPen);
painter.setBrush(QBrush(Qt::red));
painter.drawRect(rect);
```
这将绘制一个红色矩形,没有边框。同样,您需要在绘制完矩形后恢复画笔和画刷的默认值,以便后续绘图不受影响。
阅读全文