VTK QT 之 RenderWindowNoUiFile
VTK9之不用Qt ui檔案顯示
1.背景
VTK9已經沒有了 #include <QVTKWidget.h>,可能是因為QtCreator的許可的原因。
像以下程式碼,不合用了:
#include <QApplication>
#include <vtkSmartPointer.h>
#include <vtkSphereSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <QVTKWidget.h>
int main(int argc, char** argv)
{
QApplication app(argc, argv);
QVTKWidget widget;
widget.resize( 256, 256 );
vtkSmartPointer<vtkSphereSource> sphereSource =
vtkSmartPointer<vtkSphereSource>::New();
vtkSmartPointer<vtkPolyDataMapper> sphereMapper =
vtkSmartPointer<vtkPolyDataMapper>::New();
sphereMapper->SetInputConnection( sphereSource->GetOutputPort() );
vtkSmartPointer<vtkActor> sphereActor =
vtkSmartPointer<vtkActor>::New();
sphereActor->SetMapper( sphereMapper );
vtkSmartPointer<vtkRenderer> renderer =
vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor( sphereActor );
widget.GetRenderWindow()->AddRenderer( renderer );
widget.show();
app.exec();
return EXIT_SUCCESS;
}
2.VTK8.9之後
VTK9當然是沒有了,所以有新的方法,程式碼如下:
#include <QApplication>
#include <vtkActor.h>
#include <vtkGenericOpenGLRenderWindow.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkSphereSource.h>
#include <vtkVersion.h>
#if VTK_VERSION_NUMBER >= 89000000000ULL
#define VTK890 1
#endif
#include <QSurfaceFormat>
#include <QVTKOpenGLNativeWidget.h>
int main(int argc, char** argv)
{
// needed to ensure appropriate OpenGL context is created for VTK rendering.
QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());
QApplication app(argc, argv);
QVTKOpenGLNativeWidget widget;
vtkNew<vtkNamedColors> colors;
vtkNew<vtkGenericOpenGLRenderWindow> renderWindow;
#if VTK890
widget.setRenderWindow(renderWindow);
#else
widget.SetRenderWindow(renderWindow);
#endif
widget.resize(600, 600);
vtkNew<vtkSphereSource> sphereSource;
vtkNew<vtkPolyDataMapper> sphereMapper;
sphereMapper->SetInputConnection(sphereSource->GetOutputPort());
vtkNew<vtkActor> sphereActor;
sphereActor->SetMapper(sphereMapper);
sphereActor->GetProperty()->SetColor(colors->GetColor4d("Tomato").GetData());
vtkNew<vtkRenderer> renderer;
renderer->AddActor(sphereActor);
renderer->SetBackground(colors->GetColor3d("SteelBlue").GetData());
#if VTK890
widget.renderWindow()->AddRenderer(renderer);
widget.renderWindow()->SetWindowName("RenderWindowNoUIFile");
#else
widget.GetRenderWindow()->AddRenderer(renderer);
widget.GetRenderWindow()->SetWindowName("RenderWindowNoUIFile");
#endif
widget.show();
app.exec();
return EXIT_SUCCESS;
}
3.執行結果
總結
以前就是不習慣那個QVTKWidget,不好用,不如不要。這個簡潔好多了。
PCL1.11.1庫還不支援最新的VTK,不知道什麼時候會升級VTK相關的程式碼。
相關文章
- VTK QT 之 RenderWindowUISingleInheritanceQTUI
- 【點雲PCL入門】PCL+QT+VTK顯示點雲QT
- vtk智慧指標指標
- Qt之QTimeEditQT
- vtk視覺化管線視覺化
- vtk資料的讀寫
- Qt學習之XMLQTXML
- Qt ——被裁之說QT
- Qt入門之概述QT
- Qt之訊號與槽QT
- QT之共享記憶體QT記憶體
- Qt QML之 JavaScript Host EnvironmentQTJavaScript
- Qt之QDateEdit和QTimeEditQT
- QT之qss教程-QSpinBoxQT
- qt-5.6.0 移植之qt檔案系統的建立QT
- Qt 之 Graphics View Framework 簡介QTViewFramework
- Qt之QSpinBox和QDoubleSpinBoxQT
- Qt之自繪製餅圖QT
- Qt之qss檔案編寫QT
- Qt 之等待提示框(QMovie)QT
- qt之函式重定義QT函式
- QT之不同主機之間TCP通訊QTTCP
- 我所遭遇過的中介軟體--VTK
- 轉發:Python下VTK 程式設計Python程式設計
- 12_QT跨平臺執行之使用QT控制蜂鳴器QT
- 【轉】qt-vs-addin:Qt4和Qt5之VS外掛如何共存與使用QT
- QT佈局之控制元件空隙QT控制元件
- Qt程式設計之悲慘世界QT程式設計
- (轉)Qt之qss檔案編寫QT
- qt之點的繪製示例demoQT
- vtk學習記錄(三)——初識vtkRenderer
- 什麼是qt,QT Creator, QT SDK, QT DesignerQT
- QT筆記之實現陰影視窗QT筆記
- QT中類之間的關係圖QT
- Qt之設定窗體居中顯示QT
- QT之控制元件疊加顯示QT控制元件
- VTK:讀取raw檔案進行面繪製
- QT之靜態函式傳送訊號QT函式