一、项目依赖
属性页=》c/c++=》常规=》附加包含目录:加入vtk的头文件目录
属性页=》链接器=》常规=》附加库目录:加入vtk的lib文件目录
属性页=》链接器=》输入=》附加库附加库:加入vtk的lib文件名列表(可在lib目录下shift+鼠标右键,找到powershell的,输入"ls -n"命令可快速生成lib的名称列表)
另外,需要在Qt VS Tools的Qt Project Setttings窗口中找到Qt Modules,勾选OpenGL并确认。
二、附加代码
在main.cpp中添加如下代码:
#include "DcmMultiViewer.h"
#include <QtWidgets/QApplication>
#include "vtkAutoInit.h"
#include <QSurfaceFormat>
#include <QVTKOpenGLNativeWidget.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle)
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2)
VTK_MODULE_INIT(vtkRenderingContextOpenGL2)
int main(int argc, char *argv[])
{
QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());
QApplication a(argc, argv);
DcmMultiViewer w;
w.show();
return a.exec();
}
三、测试代码
最简单的测试代码,放在QMainWindow子类,如DcmMultiViewer的构造函数下面:
#include "DcmMultiViewer.h"
#include "QVTKOpenGLNativeWidget.h"
#include "vtkOpenGLRenderer.h"
#include "vtkRenderWindow.h"
DcmMultiViewer::DcmMultiViewer(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
vtkNew<vtkOpenGLRenderer> mMainRenderer;
mMainRenderer->SetBackground(0, 1., 0);
QVTKOpenGLNativeWidget* w = new QVTKOpenGLNativeWidget();
w->GetRenderWindow()->AddRenderer(mMainRenderer);
setCentralWidget(w);
}
四、编译完成
记得把DLL拷贝至运行目录。当然,如果只是调试,也可能通过属性页=》调试=》环境中添加bin路径来绕过拷贝,如:
PATH=$(ProjectDir)vtk8.2\bin;$(QTDIR)\bin%3b$(PATH)
当然,最常用的方法可能还是生成后自动拷贝,通过属性页=》生成事件=》生成后事件=》命令行添加:
copy /Y $(ProjectDir)vtk8.2\bin\*.dll $(TargetDir)