[Qt-interest] QPainterPath::contains() alternative behaviour
Jonathan Kew
jonathan_kew at sil.org
Sun Apr 5 01:37:26 CEST 2009
On 4 Apr 2009, at 23:58, Ioannis Nousias wrote:
> Jonathan Kew wrote:
>> On 4 Apr 2009, at 17:47, Ioannis Nousias wrote:
>>
>>
>>> yes, I've tried that, but contains() didn't trigger at all. Just
>>> to make sure I'm not doing something wrong, here is what I did:
>>>
>>> QPainterPathStroker stroker;
>>> QPainterPath stroke = stroker.createStroke(path);
>>>
>>> bool contains = stroke.contains
>>> (
>>> QRectF(event->pos(),event->pos())
>>> .adjusted(-0.5,-0.5,0.5,0.5)
>>> );
>>>
>>>
>>
>> Perhaps you need to set the width of the QPainterPathStroker? The
>> documentation doesn't seem to mention a default....perhaps it's
>> too narrow to hit.
>>
>> JK
>>
>>
>
> My understanding is that paths have no width. It's the Pen that you
> use that defines the width and other such properties. Am I right?
Yes, I believe so.
But when you use QPainterPathStroker, it has no idea what pen you
might be intending to use (or have already used) for drawing the path;
all you're giving it in createStroke() is the actual path, no pen
information.
However, it does have a setWidth() method of its own (and similarly
for other characteristics: dashes, mitre limit, etc). That's what I
think you may need to set, to match the characteristics of the pen
you're planning to use. Otherwise, how can it create a new path that
corresponds to the outline of what that pen would draw?
So I'm suggesting you try
stroker.setWidth(<the width of your pen>);
before calling stroker.createStroke(path).
JK
More information about the Qt-interest-old
mailing list