QT中使用VTK显示,显示不了内容
vtk吧
全部回复
仅看楼主
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里面显示不出来二维图片。
2018年05月09日 12点05分 1
level 12
如果没有报错,那就是显示了,只是看不见,调一下camera
2018年05月09日 23点05分 2
我用的是render->ResetCamera(); 我把QVTKWidget改成了QopenGLWidget,再加了一个vtkGenericOpenGLRenderWindow,就可以显示了,但是改回QVTKWidget就还是不行
2018年05月10日 02点05分
@谎言灬丶 你改成qvtkwidget2就可以了吧。或者你用imageviewer 而不是imageviewer2.
2018年06月10日 13点06分
@谎言灬丶 但是qvtkwidget和qvtkwidget2在8以后的版本里都被声明为不建议使用了,统一都使用qvtkopenglwidget
2018年06月10日 13点06分
请问你们在Qt上使用Vtk看的是哪一本书呢
2021年07月15日 05点07分
level 1
最后怎么解决的 楼主 我也按那本书 然后一直黑色
2018年07月23日 05点07分 3
level 1
楼主的问题解决了吗
2019年07月23日 05点07分 4
level 1
楼主解决了吗
2021年07月26日 08点07分 5
1