[Qt-interest] Xor'ing in paint event
anders.bakken at nokia.com
anders.bakken at nokia.com
Thu Aug 27 05:20:49 CEST 2009
You could set a flag in your paintevent to determine whether to call
straight through to the base class or call grabWidget.
--
Anders
On Aug 26, 2009, at 6:52 AM, "ext Ian Thomson"
<Ian.Thomson at iongeo.com> wrote:
> Hi
>
> This causes a stack overflow because calling the paintEvent is
> virtual,
> meaning that calling it on your 'this' pointer will call
> derived->paintEvent, even if you cast your this pointer to a Base
> type.
> So you're calling the function recursively forever, overflowing the
> stack.
>
> A better solution would be to add a function to the base class called
> 'draw' which takes a QPainter*. In the base class paintEvent, just
> make
> a QPainter in the standard way, and call the draw function. In the
> derived class, open a QPainter on an appropriately sized QImage, and
> then pass that along to the draw function.
>
> Cheers,
> Ian.
>
> Ender EREL wrote:
>> Hi Folks,
>>
>> I have a Base class and a Derived class. Both have to do some
>> painting
>> in their paint events.
>>
>> In the derived class, i want my drawings to be xor'ed with the
>> drawings
>> of the base class.
>>
>> Since the documentation clearly says "Warning: You can only set the
>> composition mode for QPainter objects that operates on a QImage.", I
>> tried a workaround.
>>
>> I tried grabbing the drawings of my base widget using
>> QPixmap::grabWidget((Base*)this), then convert the result to a
>> QImage,
>> then construct a QPainter with the image and
>> setCompositionMode(CompositionMode_Xor), and then do my drawings onto
>> that image and finally draw this image to the widget. Since just
>> explaining that method took this long, i don't think it is an elegant
>> solution. Also it doesn't work because QPixmap::grabWidget((Base*)
>> this)
>> causes a stack overflow.
>>
>> Anyone have any ideas on how to achieve this? Or any leads on where
>> to
>> start?
>>
>> Thanks in advance.
>>
>
> _______________________________________________
> Qt-interest mailing list
> Qt-interest at trolltech.com
> http://lists.trolltech.com/mailman/listinfo/qt-interest
More information about the Qt-interest-old
mailing list