这篇文章简单的介绍了如何在Linux下使用elcipse + qt + vtk 开发的方法
1,环境准备
1.1 C++ 开发环境
sudo yum install gcc
sudo yum install gcc-c++
1.2 Qt4 安装
sudo yum install qt qt-devel qt-x11 qt-doc qt-demos qt-examples qt-assistant qt-creator qt-config
1.3 eclipse + cdt安装
sudo yum install eclipse eclipse-cdt
1.3 eclipse Qt 插件安装
在
http://qt.nokia.com/products/eclipse-integration下载于操作系统对应的qt版本,如我的操作系统是 Fedora 16 32位版 就下载
Linux (x86 32 bit)
找到eclipse安装目录:如果是按照上述yum安装的,则安装目录在/usr/lib/eclipse(下述以次为例)
进入安装目录的上一级目录
cd /usr/lib
tar xzf ~/Downloads/qt-eclipse-integration-linux.x86-<version>.tar.gz
使用clean模式启动一次eclipse
eclipse -clean
Version Name: Qt4(可以随便命名)
bin path: /usr/lib/qt4/bin
include path: /usr/include
更详细的安装方法参见:
http://qt.nokia.com/products/eclipse-integration/installation-instructions-for-linux-systems
1.4 VTK安装
这里只介绍通过yum安装,需要编译安装的同学请到VTK官网下载源代码,根据说明安装
yum 安装VTK
sudo yum install vtk*
这条命令将会安装和VTK相关的所有扩展,如果需要选择安装则先
yum search vtk
然后根据自己的需要进行安装
2,一个简单的例子
2.1 工程建立
打开eclipse 新建一个Qt GUI工程,填写项目名称:QtVtk,将Ui Type设置成QMainWindow
built 工程
2.2 修改pro文件
编辑QtVtk.pro
在文件的末尾添加(编译安装VTK的同学可自行修改路径)
INCLUDEPATH = /usr/include/vtk
LIBS += -L/usr/lib
LIBS += -lvtkCommon -lvtksys -lQVTK -lvtkQtChart -lvtkViews -lvtkWidgets -lvtkInfovis -lvtkRendering -lvtkGraphics -lvtkImaging -lvtkIO -lvtkFiltering -lvtkDICOMParser -lvtkalglib -lvtkverdict -lvtkmetaio -lvtkNetCDF -lvtksqlite -lvtkexoIIc -lvtkftgl -lvtkHybrid
这里将大部分vtk支持的库都添加进去了,实际项目中可以根据需要自己添加和删除。
2.3 编辑UI
编辑qtvtk.ui
添加一个vertical Layout在MainWindow中
调整vertical Layout大小
2.4 修改窗口类代码
编辑qtvtk.h
#ifndef QTVTK_H
#define QTVTK_H
#include <QtGui/QMainWindow>
#include <QVTKWidget.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkActor2D.h>
#include <vtkTextMapper.h>
#include <vtkTextProperty.h>
#include <vtkDataSetReader.h>
#include <vtkDataSetMapper.h>
#include <vtkSphereSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkCommand.h>
#include <vtkCamera.h>
#include "ui_qtvtk.h"
class QtVtk : public QMainWindow
{
Q_OBJECT
public:
QtVtk(QWidget *parent = 0);
~QtVtk();
private:
QVTKWidget* vtkWidget;
vtkRenderer* renderer;
private:
Ui::QtVtkClass ui;
};
#endif // QTVTK_H
编辑qtvtk.cpp
#include "qtvtk.h"
QtVtk::QtVtk(QWidget *parent) :
QMainWindow(parent)
{
ui.setupUi(this);
vtkWidget = new QVTKWidget(this, QFlag(0));
ui.verticalLayout->addWidget(vtkWidget);
ui.verticalLayout->update();
renderer = vtkRenderer::New();
renderer->SetBackground(0.3,0.5,0.1);
vtkWidget->GetRenderWindow()->AddRenderer(renderer);
vtkSphereSource *sphere = vtkSphereSource::New();
sphere->SetRadius(1.0);
sphere->SetThetaResolution(18);
sphere->SetPhiResolution(18);
vtkPolyDataMapper *map= vtkPolyDataMapper::New();
map->SetInput(sphere->GetOutput());
vtkActor *aSphere = vtkActor::New();
aSphere->SetMapper(map);
aSphere->GetProperty()->SetColor(0,0,1);
renderer->AddActor(aSphere);
renderer->Render();
}
QtVtk::~QtVtk()
{
renderer->Delete();
delete vtkWidget;
}
2.5 编译运行
built工程
运行 效果如下 鼠标移至球体左键拖拽可使球体旋转