【发布时间】:2010-10-26 15:35:12
【问题描述】:
我需要使用QPainter 进行绘图,但是当我尝试不这样做时
void paintEvent( QPaintEvent* )
我发现错误:
QPainter::setPen: Painter 未激活
QPainter::setBrush: Painter 未激活
我可以使用QPainter not in void paintEvent( QPaintEvent* ) 吗?
谢谢。
【问题讨论】:
我需要使用QPainter 进行绘图,但是当我尝试不这样做时
void paintEvent( QPaintEvent* )
我发现错误:
QPainter::setPen: Painter 未激活
QPainter::setBrush: Painter 未激活
我可以使用QPainter not in void paintEvent( QPaintEvent* ) 吗?
谢谢。
【问题讨论】:
您正在使用小部件作为QPainter 的绘制设备。在这种情况下,QPainter 通常只能在小部件的绘制事件的上下文中使用。 QPainter documentation 对此有以下说法:
警告:当paintdevice是 小部件,只能使用 QPainter 在paintEvent() 函数内或在 paintEvent() 调用的函数;那 是除非 Qt::WA_PaintOutsidePaintEvent 小部件 属性已设置。在 Mac OS X 和 Windows,你只能在一个 paintEvent() 函数不管 此属性的设置。
通过为QPainter 设置另一个绘画设备,例如QPixmap,可以在绘画事件之外使用QPainter。
【讨论】: