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
- Qt之QTimeEditQT
- Qt學習之XMLQTXML
- Qt入門之概述QT
- Qt之訊號與槽QT
- Qt QML之 JavaScript Host EnvironmentQTJavaScript
- QT之共享記憶體QT記憶體
- vtk學習記錄(三)——初識vtkRenderer
- qt之函式重定義QT函式
- Qt 之 Graphics View Framework 簡介QTViewFramework
- 12_QT跨平臺執行之使用QT控制蜂鳴器QT
- QT佈局之控制元件空隙QT控制元件
- qt之點的繪製示例demoQT
- 【Python】將網格資料寫入到VTK檔案Python
- QT之控制元件疊加顯示QT控制元件
- Qt Creator程式設計之正規表示式QT程式設計
- 2020-10-13 QEvent::MouseMove 之Qt::MouseButton使用QT
- Qt QComboBox之setEditable和currentTextChanged及其原始碼分析QT原始碼
- QT之靜態函式傳送訊號QT函式
- 11_QT跨平臺執行之把QT程式交叉編譯到ARM開發板QT編譯
- 03_QT上位機開發之串列埠助手QT串列埠
- QT學習小demo之LightMD(MarkDown編輯器)QT
- QTQT
- Qt Creator匯入不同Qt版本QT
- Qt - Qt Creator下載與安裝QT
- Qt之彈出介面顯示在父視窗中間QT
- Qt原始碼解析之-從PIMPL機制到d指標QT原始碼指標
- C++《QT之按鍵QPushButton設定訊號與槽》C++QT
- QT之安卓開發——生成APK以及真機測試QT安卓APK
- Qt FontQT
- Qt MetaTypeInterfaceQT
- Qt MetadataQT
- 麒麟系統開發筆記(三):從Qt原始碼編譯安裝之編譯安裝Qt5.12筆記QT原始碼編譯
- 利用VTK和PyQt5對醫學體資料進行渲染並展示QT
- 【QT】 Qt多執行緒的“那些事”QT執行緒
- QT Creator/QT Designer佈局自適應QT
- Qt 模擬滑鼠事件-在兩個按鈕之間切換QT事件