level 2
谎言灬丶
楼主

#ifndef TEST2_H#define TEST2_H
#include <QtWidgets/QMainWindow>
#include <vtkImageViewer2.h>
#include <vtkRenderer.h>
#include <vtkSmartPointer.h>
#include "ui_test2.h"
//#define VTKSMAPOINTER(type,var) vtkSmartPointer<type> var = vtkSmartPointer<type>::New();
class test2 : public QMainWindow
{
Q_OBJECT
public:
test2(QWidget *parent = 0);
~test2();
private slots:
void onOpenSlot();
private:
Ui::test2Class ui;
//VTKSMAPOINTER(vtkImageViewer2, m_pImageViewer);
//VTKSMAPOINTER(vtkRenderer, m_pRenderer);
vtkSmartPointer<vtkImageViewer2 > m_pImageViewer;
vtkSmartPointer< vtkRenderer > m_pRenderer;
};
#endif // TEST2_H
test2.cpp:
test2::test2(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
m_pImageViewer = vtkSmartPointer< vtkImageViewer2 >::New();
m_pRenderer = vtkSmartPointer< vtkRenderer >::New();
ui.qvtkWidget->GetRenderWindow()->AddRenderer(m_pRenderer);
connect(ui.m_OpenAction, SIGNAL(triggered()), this, SLOT(onOpenSlot()));
}
void test2::onOpenSlot(){
QString filter;
filter = "JPEG image file (*.jpg *.jpeg)";
QDir dir;
QString fileName = QFileDialog::getOpenFileName(this, QString(tr("打开图像")), dir.absolutePath(), filter);
if (fileName.isEmpty() == true) return;
// 支持带中文路径的读取
QByteArray ba = fileName.toLocal8Bit();
const char *fileName_str = ba.data();
// 用vtkJPEGReader读取JPG图像
vtkSmartPointer<vtkJPEGReader> reader = vtkSmartPointer<vtkJPEGReader>::New();
reader->SetFileName(fileName_str);
reader->Update();
// 将reader的输出作为m_pImageViewer的输入,并设置m_pImageViewer与渲染器m_pRenderer的关联
m_pImageViewer->SetInputData(reader->GetOutput());
m_pImageViewer->UpdateDisplayExtent();
m_pImageViewer->SetRenderWindow(ui.qvtkWidget->GetRenderWindow());
m_pImageViewer->SetRenderer(m_pRenderer);
m_pImageViewer->SetupInteractor(ui.qvtkWidget->GetRenderWindow()->GetInteractor());
m_pImageViewer->SetSliceOrientationToXY(); //默认就是这个方向的
m_pImageViewer->GetImageActor()->InterpolateOff();
m_pRenderer->ResetCamera();
m_pRenderer->DrawOn();
//reader->Update();
ui.qvtkWidget->GetRenderWindow()->Render();
}
test2::~test2()
{
}
程序是VTK图形图像开发进阶内的程序,
程序可以运行,但是qvtkWidget里面显示不出来二维图片。