QPainter::begin(): Returned false 如何修正?
时间: 2024-06-03 20:09:24 浏览: 270
这个问题通常是由于 QPainter 实例没有成功创建导致的。可以检查创建 QPainter 实例时传入的参数是否正确,以及是否在正确的位置调用 begin() 和 end() 函数。此外,还可以考虑使用 QPainter 的另一个构造函数来创建实例,或者查看是否需要调用 QWidget::paintEvent() 函数来正确使用 QPainter。
相关问题
QPainter::begin: Paint device returned engine == 0, type: 1 QPainter::setFont: Painter not active
当遇到`QPainter::begin: Paint device returned engine == 0, type: 1`这样的错误时,意味着你试图开始使用`QPainter`之前,所指的绘图设备(如窗口或图像内存)并没有正确初始化。这通常发生在以下情况之一:
- 你忘记为`QPainter`提供有效的绘图对象,比如一个`QWidget`或`QImage`:
```cpp
QPainter painter; // 这里需要传递一个具体的设备对象,如 painter.begin(window)
```
- 或者,你尝试在已经关闭或结束的`QPainter`上下文中继续绘制:
```cpp
painter.end(); // 如果这里已调用过end(),就不能再用它了
```
`QPainter::setFont: Painter not active`错误提示表示当前的`QPainter`对象并未处于活动状态,也就是说你没有开始画画。你应该先调用`begin()`来激活它,然后再设置字体:
```cpp
QFont myFont("宋体", 14);
QPainter painter(widget);
painter.begin(); // 激活painter
painter.setFont(myFont);
```
一旦活跃,你就可以正常地在`painter`上进行文本或其他元素的绘制。
QPainter::begin: Paint device returned engine == 0, type: 1
这个错误信息通常是由于在使用QPainter进行绘图之前没有设置绘图设备引起的。在使用QPainter进行绘图之前,需要先指定绘图设备,比如QWidget或QPixmap,然后再使用QPainter对其进行绘图。
你可以检查一下你的代码,看是否在使用QPainter进行绘图之前已经设置了绘图设备。如果没有,你可以在绘图之前先创建一个QWidget或QPixmap对象,并将其传递给QPainter,例如:
```cpp
QPixmap pixmap(width, height);
QPainter painter(&pixmap);
painter.drawXXX(...); // 进行绘图操作
```
这样就可以避免这个错误信息的出现了。
阅读全文