1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
/*
* Copyright 2007 Sandia Corporation.
* Under the terms of Contract DE-AC04-94AL85000, there is a non-exclusive
* license for use of this work by or on behalf of the
* U.S. Government. Redistribution and use in source and binary forms, with
* or without modification, are permitted provided that this Notice and any
* statement of authorship are reproduced on all copies.
*/
#include "ui_SimpleView.h"
#include "SimpleView.h"
#include <vtkDataObjectToTable.h>
#include <vtkElevationFilter.h>
#include <vtkPolyDataMapper.h>
#include <vtkQtTableView.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkVectorText.h>
#include "vtkSmartPointer.h"
#define VTK_CREATE(type, name) \
vtkSmartPointer<type> name = vtkSmartPointer<type>::New()
// Constructor
SimpleView::SimpleView()
{
this->ui = new Ui_SimpleView;
this->ui->setupUi(this);
// Qt Table View
this->TableView = vtkSmartPointer<vtkQtTableView>::New();
// Place the table view in the designer form
this->ui->tableFrame->layout()->addWidget(this->TableView->GetWidget());
// Geometry
VTK_CREATE(vtkVectorText, text);
text->SetText("VTK and Qt!");
VTK_CREATE(vtkElevationFilter, elevation);
elevation->SetInputConnection(text->GetOutputPort());
elevation->SetLowPoint(0,0,0);
elevation->SetHighPoint(10,0,0);
// Mapper
VTK_CREATE(vtkPolyDataMapper, mapper);
mapper->ImmediateModeRenderingOn();
mapper->SetInputConnection(elevation->GetOutputPort());
// Actor in scene
VTK_CREATE(vtkActor, actor);
actor->SetMapper(mapper);
// VTK Renderer
VTK_CREATE(vtkRenderer, ren);
// Add Actor to renderer
ren->AddActor(actor);
// VTK/Qt wedded
this->ui->qvtkWidget->GetRenderWindow()->AddRenderer(ren);
// Just a bit of Qt interest: Culling off the
// point data and handing it to a vtkQtTableView
VTK_CREATE(vtkDataObjectToTable, toTable);
toTable->SetInputConnection(elevation->GetOutputPort());
toTable->SetFieldType(vtkDataObjectToTable::POINT_DATA);
// Here we take the end of the VTK pipeline and give it to a Qt View
this->TableView->SetRepresentationFromInputConnection(toTable->GetOutputPort());
// Set up action signals and slots
connect(this->ui->actionOpenFile, SIGNAL(triggered()), this, SLOT(slotOpenFile()));
connect(this->ui->actionExit, SIGNAL(triggered()), this, SLOT(slotExit()));
};
SimpleView::~SimpleView()
{
// The smart pointers should clean up for up
}
// Action to be taken upon file open
void SimpleView::slotOpenFile()
{
}
void SimpleView::slotExit() {
qApp->exit();
}
|