最近在学习VTK+QT+C++,学习之路真是艰苦。不过总算是努力就有收获,回到正题。
首先,在QT中放入QVTKWidget插件,这个之前又说,不赘述。新建一个QT应用程序,有三个可编辑的文件,即main.cxx、工程名.h、工程名.cxx。main文件几乎不需要编辑。
// main.cxx
#include <QApplication>
#if QT_VERSION < 0x050000
#include <QCleanlooksStyle>
#endif
#include "SimpleView.h"
extern int qInitResources_icons();
int main( int argc, char** argv )
{
// QT Stuff
QApplication app( argc, argv );
#if QT_VERSION >= 0x050000
QApplication::setStyle("fusion");
#else
QApplication::setStyle(new QCleanlooksStyle);
#endif
qInitResources_icons();
SimpleView mySimpleView;
mySimpleView.show();
return app.exec();
}
接下来是工程文件,我的是SimpleView.h
//SimpleView.h
#ifndef SimpleView_H
#define SimpleView_H
#include "vtkSmartPointer.h" // Required for smart pointer internal ivars.
#include <QMainWindow>
#include "ui_SimpleView.h"
#include <QFileDialog>
#include <QDir>
#include <qstring.h>
#include <qlineedit.h>
#include <QPushButton>
#include <vtkDataObjectToTable.h>
#include <vtkElevationFilter.h>
#include <vtkPolyDataMapper.h>
//#include <vtkQtTableView.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkVectorText.h>
#include <QtWidgets/QApplication>
#include "vtkImageViewer2.h"
#include "vtkInteractorStyleImage.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkImageActor.h"
#include "vtkDICOMImageReader.h"
#include "vtkGenericOpenGLRenderWindow.h"
#include "string"
#include "vtkCommand.h"
#include "vtkImageData.h"
#include "vtkPointData.h"
#include "vtkPropPicker.h"
#include "vtkCornerAnnotation.h"
#include "vtkAssemblyPath.h"
#include <vtkEventQtSlotConnect.h>
#include <vtkImageNoiseSource.h>
#include <vtkImageCast.h>
#include <QVTKWidget.h>
class Ui_SimpleView;
class vtkImageViewer2;
class vtkRenderer;
class vtkEventQtSlotConnect;
class vtkObject;
class vtkCommand;
class SimpleView : public QMainWindow,public Ui::SimpleView
{
Q_OBJECT
public:
// Constructor/Destructor