QPainter::setRenderHint: Painter must be active to set rendering hints
时间: 2023-11-28 12:49:35 浏览: 489
这个警告信息意味着你在使用 QPainter 绘图时,调用了 setRenderHint 函数来设置渲染选项,但是此时 QPainter 没有处于活动状态。你需要先使用 begin 函数开始绘图,然后才能使用 setRenderHint 函数设置渲染选项,最后使用 end 函数结束绘图。例如:
```
QPainter painter(this);
painter.begin(this);
painter.setRenderHint(QPainter::Antialiasing); // 设置抗锯齿
// 绘制代码
painter.end();
```
在这个例子中,我们首先创建了一个 QPainter 对象 painter,然后使用 begin 函数开始绘图,接着设置了抗锯齿选项,最后在 end 函数中结束绘图。这样就可以避免警告信息的出现。
相关问题
報錯:QPainter::drawPath: Painter not active
这个错误通常是由于没有正确使用绘图上下(`QPainter`)致的。请确在绘制路径之前调了 `begin` 方法,并在完成绘制后用 `end` 方法。以下是一个例:
```cpp
QWidget* widget = QWidget(this);
widget->setMinimumSize(, 400);
QPainter painter(widget);
painter.begin(widget);
// 在此处进行绘图操作,包括绘制路径
painter.end();
```
请确保在 `begin` 和 `end` 之间进行绘图操作,并且 `QPainter` 对象的生命周期在这之间。这样可以确保绘图上下文处于活动状态,避免出现 "Painter not active" 的错误。
QPainter::translate: Painter not active QPainter::rotate: Painter not active
这个错误通常发生在没有开始绘制之前调用了QPainter的绘图函数。请确保您已经调用了begin()函数来开始绘制,例如:
```
QPainter painter(this); // this为绘制的目标设备,例如QWidget或QPixmap
painter.begin(this); // 开始绘制
// 绘制代码,例如:
painter.drawPixmap(agvs[i].current_x*25+200-(agv_size-nodeSize)/2,(agvs[i].current_y+1)*25+50-(agv_size-nodeSize)/2,agv_size,agv_size,QPixmap(":/new/prefix1/agv1.png").scaled(25,25));
painter.translate(agvs[i].current_x*25+200, (agvs[i].current_y+1)*25+50);
painter.rotate(agvs[i].angle_);
painter.drawPixmap(-agv_size/2, -agv_size/2, agv_size, agv_size, agvPixmap.scaled(25, 25).transformed(QTransform().rotate(agvs[i].angle_)));
painter.end(); // 结束绘制
```
这里我们使用QPainter的begin()函数开始绘制,然后在绘制代码中调用translate()和rotate()函数。最后,我们使用end()函数结束绘制。
阅读全文