#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle)
#include <vtkSmartPointer.h>
class vtkRenderer;
class vtkImageCanvasSource2D;
class vtkImageData;
class vtkImageViewer2;
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
vtkSmartPointer<vtkRenderer> pRenderer;
vtkSmartPointer<vtkImageViewer2> pImageViewer;
vtkSmartPointer<vtkImageCanvasSource2D> pImageCanvas;
// vtkSmartPointer<vtkRenderer> pRenderer2;
// vtkSmartPointer<vtkImageData> pImageData;
// vtkSmartPointer<vtkImageViewer2> pImageViewer2;
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <vtkRenderer.h>
#include <vtkImageViewer2.h>
#include <vtkImageCanvasSource2D.h>
#include <vtkImageActor.h>
#include <vtkRenderWindow.h>
#include <vtkImageData.h>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
pImageCanvas = vtkSmartPointer<vtkImageCanvasSource2D>::New();
pImageCanvas->SetScalarTypeToUnsignedChar();
pImageCanvas->SetNumberOfScalarComponents(4);
pImageCanvas->SetExtent(0, 100,0, 100, 0, 0);
pImageCanvas->SetDrawColor(0, 0, 0, 0);
pImageCanvas->FillBox(0,100,0,100);
pImageCanvas->SetDrawColor(255, 0, 0, 0);
pImageCanvas->FillBox(20,40,20,40);
pRenderer = vtkSmartPointer<vtkRenderer>::New();
pRenderer->SetBackground(1.0, 0, 0);
ui->qvtkWidget->GetRenderWindow()->AddRenderer(pRenderer);
pImageViewer = vtkSmartPointer<vtkImageViewer2>::New();
pImageViewer->SetInputConnection(pImageCanvas->GetOutputPort());
pImageViewer->UpdateDisplayExtent();
pImageViewer->SetRenderWindow(ui->qvtkWidget->GetRenderWindow());
pImageViewer->SetRenderer(pRenderer);
pImageViewer->SetupInteractor(ui->qvtkWidget->GetInteractor());
}
MainWindow::~MainWindow()
{
delete ui;
}
QT UI 文件内容(粘贴该部分内容道文本文件,将格式改为.ui即可)
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralWidget">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QVTKWidget" name="qvtkWidget"/>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QToolBar" name="mainToolBar">
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
</widget>
<widget class="QStatusBar" name="statusBar"/>
</widget>
<layoutdefault spacing="6" margin="11"/>
<customwidgets>
<customwidget>
<class>QVTKWidget</class>
<extends>QWidget</extends>
<header>QVTKWidget.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>
来源:oschina
链接:https://my.oschina.net/u/4393652/blog/4906821