[vtkusers] Qt & VTK 2d plotting

Justin Giles jtgiles at gmail.com
Mon Feb 23 22:32:09 EST 2009


Ok, so if I understand this correctly, with any 2d plots in VTK, you cannot
interact with them unless you create your own mouse/keyboard listeners with
your own custom code to do what you want?
That leads to another question......

I see a lot of vtkQtChart stuff in the source code with a few examples.  It
looks as if that code base has interaction built in and it seems to be 2d
plots as well.  Any comments on the vtkQtChart stuff?  I haven't been able
to get it to work due to a flaw in the cmake files in the
GUISupport/Qt/Chart area (already filed a bug report).

Thanks for any input with this.  I appreciate the responses so far.  It's a
big help!

Justin

On Mon, Feb 23, 2009 at 4:37 PM, Shakes
<Shekhar.Chandra at sci.monash.edu.au>wrote:

> Hi Justin,
>
> Someone correct me if I'm wrong, but I don't think u can interact with it
> as the plot is not in a 3D scene (i.e., its a not plane in a 3D scene).
>
> This is difference between vtkImageViewer and vtkImageViewer2, the latter
> is in a 3D scene and you can interact with it.
>
> I used the following to "zoom" XY Plots:
>
> //Scale
> plotActor->SetWidth(factor);
> plotActor->SetHeight(factor);
> //Reposition
> plotActor->SetPosition(pos[0]-factor*pos[0], pos[1]-factor*pos[1]);
>
> HTH
> Cheers
> Shakes
>
> Justin Giles wrote:
>
>> That didn't seem to work either.  I'm trying to view a xy plot.
>>
>> Justin
>>
>> On Mon, Feb 23, 2009 at 1:05 PM, Clinton Stimpson <clinton at elemtech.com<mailto:
>> clinton at elemtech.com>> wrote:
>>
>>
>>    Maybe you're just missing a
>>    renderer->ResetCamera();
>>
>>    If you're just viewing an image, have a look at the image viewer
>>    example in VTK/Examples/GUI/Qt/ImageViewer
>>
>>    Clint
>>
>>    Justin Giles wrote:
>>
>>        Ok, I added a style to my interactor in the following way:
>>
>>        //code
>>           vtkRenderWindow *renderWindow = vtkRenderWindow::New();
>>           renderWindow->SetSize(550, 450);
>>           renderWindow->AddRenderer(renderer);
>>           vtkRenderWindowInteractor* inter = QVTKInteractor::New();
>>           renderWindow->SetInteractor(inter);
>>           vtkInteractorStyleImage* interstyle =
>>        vtkInteractorStyleImage::New();
>>           inter->SetInteractorStyle(interstyle);
>>           view->SetRenderWindow(renderWindow);
>>        //end code
>>
>>        (where view = QVTKWidget)
>>
>>        And, I still get the same results.  Instead of a nice plot, I
>>        just get a blank white screen.  Thoughts?  Am I doing something
>>        wrong?
>>
>>        Thanks,
>>
>>        Justin
>>
>>        On Mon, Feb 23, 2009 at 11:20 AM, Clinton Stimpson
>>        <clinton at elemtech.com <mailto:clinton at elemtech.com>
>>        <mailto:clinton at elemtech.com <mailto:clinton at elemtech.com>>>
>> wrote:
>>
>>
>>           Interaction is handled by the interactor style classes.
>>
>> http://www.vtk.org/doc/nightly/html/classvtkInteractorStyle.html
>>
>>           You can use an existing style, or make your own and give it
>>        to the
>>           interactor.
>>
>>           Clint
>>
>>           Justin Giles wrote:
>>
>>               I am able to create a 2d plot using a QVTKWidget, however
>>        I am
>>               unable to interact with that plot.  I pretty much new to
>> VTK,
>>               so I am kind of at a loss as to how to connect the vtk
>>               interactors and Qt.  I have poked around a bit and noticed a
>>               QVTKInteractor class, but anything I do with that results in
>>               my 2d plot going away to be replaced with a blank white
>> area.
>>                Below is the code that I am using.  Just as a note, this is
>>               being done in a class that extends a QMainWindow.
>>
>>               //snippet//
>>
>>
>>                  view = new QVTKWidget;
>>                  setCentralWidget(view);
>>
>>                  int DIM = 500;
>>                  vtkDataArray *dataArray1 =
>>               vtkDataArray::CreateDataArray(VTK_FLOAT);
>>                  dataArray1->SetNumberOfTuples(DIM);
>>
>>                  vtkDataArray *dataArray2 =
>>               vtkDataArray::CreateDataArray(VTK_FLOAT);
>>                  dataArray2->SetNumberOfTuples(DIM);
>>
>>                  int t;
>>                  for (t = 0; t < DIM; t++)
>>                  {
>>                      float x = t;
>>                      float y = vtkMath::Random(0.0f,1.0f);
>>                      dataArray1->SetTuple(t, &x);
>>                      dataArray2->SetTuple(t, &y);
>>                  }
>>
>>                  vtkFieldData *fieldData = vtkFieldData::New();
>>                  fieldData->AllocateArrays(2);
>>                  fieldData->AddArray(dataArray1);
>>                  fieldData->AddArray(dataArray2);
>>
>>                  vtkDataObject *dataObject = vtkDataObject::New();
>>                  dataObject->SetFieldData(fieldData);
>>
>>                  vtkXYPlotActor *plot = vtkXYPlotActor::New();
>>                  plot->AddDataObjectInput(dataObject);
>>                  plot->SetTitle("Plot");
>>                  plot->SetXTitle("X-Axis");
>>                  plot->SetYTitle("Y-Axis");
>>                  plot->SetXValuesToValue();
>>                  plot->SetWidth(0.9);
>>                  plot->SetHeight(0.9);
>>                  plot->SetPosition(0.05, 0.05);
>>                  plot->LegendOn();
>>                  plot->PickableOff();
>>                  plot->PlotCurvePointsOn();
>>                  plot->PlotCurveLinesOff();
>>
>>                  plot->SetDataObjectXComponent(0, 0);
>>                  plot->SetDataObjectYComponent(0, 1);
>>                  plot->SetPlotColor(0, 1.0, 0.0, 0.0);
>>                  plot->SetPlotLabel(0, "My Label");
>>                  //plot->GetProperty()->SetColor(0.0, 0.0, 0.0);
>>
>>                  vtkRenderer *renderer = vtkRenderer::New();
>>                  renderer->SetBackground(0, 0, 0);
>>                  renderer->AddActor2D(plot);
>>
>>                  vtkRenderWindow *renderWindow = vtkRenderWindow::New();
>>                  renderWindow->SetSize(550, 450);
>>                  renderWindow->AddRenderer(renderer);
>>               //    vtkRenderWindowInteractor* inter =
>>        QVTKInteractor::New();
>>               //    renderWindow->SetInteractor(inter);
>>                  view->SetRenderWindow(renderWindow);
>>
>>               //end-snippet//
>>
>> ------------------------------------------------------------------------
>>
>>               _______________________________________________
>>               Powered by www.kitware.com <http://www.kitware.com>
>>        <http://www.kitware.com>
>>
>>
>>               Visit other Kitware open-source projects at
>>               http://www.kitware.com/opensource/opensource.html
>>
>>               Please keep messages on-topic and check the VTK FAQ at:
>>               http://www.vtk.org/Wiki/VTK_FAQ
>>
>>               Follow this link to subscribe/unsubscribe:
>>               http://www.vtk.org/mailman/listinfo/vtkusers
>>
>>
>>
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Please keep messages on-topic and check the VTK FAQ at:
>> http://www.vtk.org/Wiki/VTK_FAQ
>>
>> Follow this link to subscribe/unsubscribe:
>> http://www.vtk.org/mailman/listinfo/vtkusers
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20090223/732b80f7/attachment.htm>


More information about the vtkusers mailing list