<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Arial,Helvetica,sans-serif;">
<p>Hi,</p>
<p><br>
</p>
<p>I would like to know how the events are propogated in case of QVTKWidget & QVTKWidget2. Is there any difference in these two? I have an application built with QVTKWidget. I have Graphics window derived from QVTKWidget</p>
<p><br>
</p>
<p></p>
<pre style="margin-top: 0px; margin-bottom: 0px;"><!--StartFragment--><span style=" color:#000080;">#ifndef</span><span style=" color:#c0c0c0;"> </span>GRAPHICSWINDOW_H</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#000080;">#define</span><span style=" color:#c0c0c0;"> </span><span style=" color:#000080;">GRAPHICSWINDOW_H</span></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><br></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#000080;">#include</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008000;"><QWidget></span></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><br></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#000080;">#include</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">"QVTKWidget.h"</span></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#000080;">#include</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008000;"><vtkRenderer.h></span></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><br></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#808000;">class</span><span style=" color:#c0c0c0;"> </span><span style=" color:#800080;">GraphicsWindow</span><span style=" color:#c0c0c0;"> </span>:<span style=" color:#c0c0c0;"> </span><span style=" color:#808000;">public</span><span style=" color:#c0c0c0;"> </span><span style=" color:#800080;">QVTKWidget</span></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;">{</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span><span style=" color:#000080;">Q_OBJECT</span></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span><span style=" color:#800080;">vtkRenderer</span><span style=" color:#c0c0c0;"> </span>*<span style=" color:#800000;">currentRenderer</span>;</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#808000;">public</span>:</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><br></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span><span style=" color:#800080;">GraphicsWindow</span>(<span style=" color:#800080;">QWidget</span><span style=" color:#c0c0c0;"> </span>*parent<span style=" color:#c0c0c0;"> </span>=<span style=" color:#c0c0c0;"> </span><span style=" color:#000080;">NULL</span>);</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span>~<span style="font-style: italic;">GraphicsWindow</span>();</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><br></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#808000;">protected</span>:</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><br></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span><span style=" color:#808000;">virtual</span><span style=" color:#c0c0c0;"> </span><span style=" color:#808000;">void</span><span style=" color:#c0c0c0;"> </span><span style="font-style: italic;">keyPressEvent</span>(<span style=" color:#800080;">QKeyEvent</span><span style=" color:#c0c0c0;"> </span>*event);</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span><span style=" color:#808000;">virtual</span><span style=" color:#c0c0c0;"> </span><span style=" color:#808000;">void</span><span style=" color:#c0c0c0;"> </span><span style="font-style: italic;">keyReleaseEvent</span>(<span style=" color:#800080;">QKeyEvent</span><span style=" color:#c0c0c0;"> </span>*event);</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><br></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;">};</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#000080;">#endif</span><span style=" color:#c0c0c0;"> </span></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;"><br></span></pre>
The definition for this class is as follows:
<div><br>
</div>
<div>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#800080;">GraphicsWindow</span>::GraphicsWindow(<span style=" color:#800080;">QWidget</span><span style=" color:#c0c0c0;"> </span>*parent)</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span>:<span style=" color:#800080;">QVTKWidget</span>(parent)</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;">{</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#000080;">#ifdef</span><span style=" color:#c0c0c0;"> </span><span style=" color:#000080;">QT_DEBUG</span></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span><span style=" color:#800080;">vtkObject</span>::GlobalWarningDisplayOn();</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#000080;">#else</span></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span>vtkObject::GlobalWarningDisplayOff();</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#000080;">#endif</span></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><br></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span><span style=" color:#800000;">currentRenderer</span><span style=" color:#c0c0c0;"> </span>=<span style=" color:#c0c0c0;"> </span><span style=" color:#800080;">vtkRenderer</span>::New();</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span><span style=" color:#800000;">currentRenderer</span>-><span style="font-style: italic;">SetBackground</span>(<span style=" color:#c0c0c0;"> </span><span style=" color:#000080;">0.5</span>,<span style=" color:#c0c0c0;"> </span><span style=" color:#000080;">0.0</span>,<span style=" color:#c0c0c0;"> </span><span style=" color:#000080;">0.0</span>);</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><br></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><br></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#008000;">//</span><span style=" color:#c0c0c0;">    </span><span style=" color:#008000;">vtkGenericOpenGLRenderWindow</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">*glrw</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">=</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">vtkGenericOpenGLRenderWindow::SafeDownCast(this->GetRenderWindow());</span></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#008000;">//</span><span style=" color:#c0c0c0;">    </span><span style=" color:#008000;">glrw->AddRenderer(currentRenderer);</span></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#008000;">//</span><span style=" color:#c0c0c0;">    </span><span style=" color:#008000;">this->SetRenderWindow(glrw);</span></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><br></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span><span style=" color:#808000;">this</span>-><span style="font-style: italic;">GetRenderWindow</span>()-><span style="font-style: italic;">AddRenderer</span>(<span style=" color:#800000;">currentRenderer</span>);</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span><span style=" color:#808000;">this</span>-><span style="font-style: italic;">GetRenderWindow</span>()-><span style="font-style: italic;">GetInteractor</span>()-><span style="font-style: italic;">SetInteractorStyle</span>(<span style=" color:#800000;">currentInteractorStyle</span>);</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><br></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span><span style=" color:#800080;">vtkSmartPointer</span><<span style=" color:#800080;">vtkCubeSource</span>><span style=" color:#c0c0c0;"> </span>cubeSource<span style=" color:#c0c0c0;"> </span>=</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">            </span><span style=" color:#800080;">vtkSmartPointer</span><<span style=" color:#800080;">vtkCubeSource</span>>::New();</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span>cubeSource-><span style="font-style: italic;">SetCenter</span>(<span style=" color:#000080;">10</span>,<span style=" color:#c0c0c0;"> </span><span style=" color:#000080;">10</span>,<span style=" color:#c0c0c0;"> </span><span style=" color:#000080;">10</span>);</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span>cubeSource-><span style="font-style: italic;">SetXLength</span>(<span style=" color:#000080;">10</span>);</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span>cubeSource-><span style="font-style: italic;">SetYLength</span>(<span style=" color:#000080;">10</span>);</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span>cubeSource-><span style="font-style: italic;">SetZLength</span>(<span style=" color:#000080;">30</span>);</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span>cubeSource-><span style="font-style: italic;">Update</span>();</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><br></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span><span style=" color:#800080;">vtkSmartPointer</span><<span style=" color:#800080;">vtkDataSetMapper</span>><span style=" color:#c0c0c0;"> </span>cubeMapper<span style=" color:#c0c0c0;"> </span>=</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">            </span><span style=" color:#800080;">vtkSmartPointer</span><<span style=" color:#800080;">vtkDataSetMapper</span>>::New();</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><br></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span>cubeMapper-><span style="font-style: italic;">SetInputConnection</span>(cubeSource->GetOutputPort());</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><br></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span><span style=" color:#800080;">vtkActor</span><span style=" color:#c0c0c0;"> </span>*cubeActor<span style=" color:#c0c0c0;"> </span>=<span style=" color:#c0c0c0;"> </span><span style=" color:#800080;">vtkActor</span>::New();</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span>cubeActor-><span style="font-style: italic;">SetMapper</span>(cubeMapper);</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span>cubeActor->GetProperty()->SetRepresentationToWireframe();</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#008000;"></span></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span>cubeActor->GetProperty()-><span style="font-style: italic;">LightingOff</span>();</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#008000;"></span></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span>cubeActor->GetProperty()-><span style="font-style: italic;">SetColor</span>(<span style=" color:#000080;">1</span>,<span style=" color:#c0c0c0;"> </span><span style=" color:#000080;">1</span>,<span style=" color:#c0c0c0;"> </span><span style=" color:#000080;">1</span>);</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#008000;"></span></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><br></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span><span style=" color:#800000;">currentRenderer</span>->AddActor(cubeActor);</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style="font-family: Calibri, Arial, Helvetica, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;">}</span><br></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><br></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><br></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#800080;">GraphicsWindow</span>::~<span style="font-style: italic;">GraphicsWindow</span>()</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;">{</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><br></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;">}</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><br></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#808000;">void</span><span style=" color:#c0c0c0;"> </span><span style=" color:#800080;">GraphicsWindow</span>::<span style="font-style: italic;">keyPressEvent</span>(<span style=" color:#800080;">QKeyEvent</span><span style=" color:#c0c0c0;"> </span>*event)</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;">{</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span><span style=" color:#800080;">std</span>::cout<span style=" color:#c0c0c0;"> </span><<<span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">"Key</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">press"</span><span style=" color:#c0c0c0;"> </span><<<span style=" color:#c0c0c0;"> </span><span style=" color:#800080;">std</span>::endl;</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;">}</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><br></pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#808000;">void</span><span style=" color:#c0c0c0;"> </span><span style=" color:#800080;">GraphicsWindow</span>::<span style="font-style: italic;">keyReleaseEvent</span>(<span style=" color:#800080;">QKeyEvent</span><span style=" color:#c0c0c0;"> </span>*event)</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;">{</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" color:#c0c0c0;">    </span><span style=" color:#800080;">std</span>::cout<span style=" color:#c0c0c0;"> </span><<<span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">"Key</span><span style=" color:#c0c0c0;"> </span><span style=" color:#008000;">release"</span><span style=" color:#c0c0c0;"> </span><<<span style=" color:#c0c0c0;"> </span><span style=" color:#800080;">std</span>::endl;</pre>
<pre style="margin-top: 0px; margin-bottom: 0px;">}</pre>
<br>
<p></p>
<p>When this application is built with QVTKWidget, the keypress and keyrelease events are executing fine. But when the same code built with QVTKWidget2 there key events are not processed. Is there any differences in these two widgets? Is there anything wrong
 I am doing? Kindly guide me as to how to process key events using QVTKWidget2.</p>
<p><br>
</p>
<p>Thanks</p>
<p><br>
</p>
<div id="Signature">
<div id="divtagdefaultwrapper" style="font-size:12pt; color:#000000; background-color:#FFFFFF; font-family:Calibri,Arial,Helvetica,sans-serif">
<p>Warm Regards</p>
<p>Rakesh Patil</p>
<p></p>
</div>
</div>
</div>
</div>
</body>
</html>