[vtkusers] How to make vtkChartXY non-interactive?

Elvis Stansvik elvis.stansvik at orexplore.com
Wed Jun 14 02:37:44 EDT 2017


Den 13 juni 2017 5:53 em skrev "Marcus D. Hanwell" <
marcus.hanwell at kitware.com>:
>
> On Tue, Jun 13, 2017 at 9:16 AM, Elvis Stansvik <
elvis.stansvik at orexplore.com> wrote:
>>
>> 2017-06-13 15:10 GMT+02:00 Elvis Stansvik <elvis.stansvik at orexplore.com>:
>>>
>>> I'm using a
>>>
>>>    vtkChartXY
>>>    vtkColorTransferControlPointsItem
>>>    vtkColorTransferFunctionItem
>>>
>>> trio for editing a vtkColorTransferFunction.
>>>
>>> I'm now trying to make it non-editable (I want this for system
"built-in" color functions). I've tried calling SetInteractive(false) on
all three of them. I even tried hiding the control points item, but still I
can interact with the points using the mouse.
>>>
>>> How can I make it non-interactive?
>>>
>>> I'm using VTK 8.0.0.rc1.
>>
>>
>> I know I could always override and swallow mouse events, but that seems
like the wrong approach?
>>
>> I'm only interested in disabling interaction with the control points
item. Even hiding it as well would be OK.
>>
> So I would use the SetActionToButton method in vtkChart, and set each
action to -1 (no button).

Ah thanks, I'll take a look at that.

> Looking at the vtkControlPointsItem the press event is not configurable,
and so you would really have to derive from it, and override it that way as
far as I can see. It could be modified, but that ability doesn't appear to
be present. I am trying to remember how we propagate mouse events from the
containing chart, but am a little rusty on that logic.
>
> We don't have the equivalent of an event filter as far as I am aware, but
in the Qt world I would use that to intercept events before they get to the
chart.

Alright, thanks a lot for the info.

What surprised me most was that neither SetInteractive(false) on the
control points item, nor hiding it with SetVisible(false) would prevent
interaction with the points. Should either of those be considered bugs?

The heavy-handed approach I came up with yesterday was to simply remove
the  control points item from the chart temporarily when I want to disable
interaction. This was OK for me since having the points also disappear was
actually my ultimate goal. Just thought SetVisible(false) would be enough.

Elvis
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20170614/0698ed04/attachment.html>


More information about the vtkusers mailing list