如何在QT中显示VTK生成的图像,网上真的是乱七八糟,回头搞完我来更。
真的是要把人气死!我一直在纠结VTK跟QT的连接,做了一堆无用功!!!
好吧,首先我的编译器是Xcode,并不是非要在QT Creater上显示,在xcode里显示就好了啊。首先你要保证,你的VTk可以在Xcode(或者 你的vs)上运行可以出现图像;
OK
我的这个例子实现的是:
1、建立一个QT界面,实现点击“open”弹出对话框,选择一个图像(任何格式,mhd,raw,bmp,jpg,随你喜欢)
2、由VTK显示出来。
其实这个跟你用VTK直接读取一个图片,结果弹出一个结果框事一样的,不一样的事这个文件是手动选的而已!
先放结果: 左边是选择文件;右边是VTK结果显示,那个黑色的弹出框;红色的是QT界面(跟公司有关,我就打码了)
具体做法:
1、首先,虽然我的代码是在Xcode里完成的,但是我为了方便,先在QT Creater里做界面;
做完QT界面后有很多文件需要拷贝到Xcode工程下的;后面我会讲
2、QT 界面执行完后有两个文件夹,build是你程序运行后自动生成;QTpro是所有的源代码
打开以后
3、新建Xcode工程;
4、把我红色圈出来的放到Xcode工程下面,上面的main函数始终是我的主程序。
5、用VTK读一个文件并显示出来的程序我就不讲了,下面就是把VTK函数跟上面的一堆函数结合;
6、QT生成的是个类,我把VTK显示的封装成一个函数,作为QWidget的一个公有函数imshow,把imshow函数放在widget.cpp文件里,就OK了
#ifndef WIDGET_H
#define WIDGET_H
#include"VesselnessTree.h"
#include <QWidget>
#include <QPushButton>
#include "QMenuBar"
#include <QAction>
#include <QVBoxLayout>
#include <QFileDialog>
#include "QMessageBox"
#include "QTextEdit"
#include "QPalette"
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
QString selectFilename();
void imshow(string filename);
private slots:
void on_file_clicked();
void on_help_clicked();
void on_pushButton_clicked();
private:
Ui::Widget *ui;
QVBoxLayout *boxLayout;
QString path ;
};
#endif // WIDGET_H
备注:
我的意思是不用非的用QVTKWidget控件,因为这个我控件我实在没搞出来。
所以我选择Xcode编译器。