我需要使用QPainter
进行绘制,但是当我尝试不在
void paintEvent( QPaintEvent* )
我发现错误:
QPainter :: setPen:画家不活跃
QPainter :: setBrush:画家不活跃
我可以使用QPainter
而不是paintEvent( QPaintEvent* )
吗?
谢谢。
答案 0 :(得分:3)
您正在使用窗口小部件作为QPainter
的绘图设备。在这种情况下,QPainter
通常只能在窗口小部件的绘制事件的上下文中使用。 QPainter
documentation对此有以下说法:
警告:当paintdevice是 小部件,QPainter只能使用 在paintEvent()函数内或在 paintEvent()调用的函数;那 除非 Qt :: WA_PaintOutsidePaintEvent小部件 属性已设置。在Mac OS X和 Windows,你只能画一个 paintEvent()函数无论如何 这个属性的设置。
通过为QPainter
设置另一个绘图设备,可以在绘画事件之外使用QPainter
,例如QPixmap
。