将VTK窗口添加到QT窗口
本文最后更新于 269 天前,其中的信息可能已经有所发展或是发生改变。

使用QT中QVTKOpenGLNativeWidget搭配VTK中vtkGenericOpenGLRenderWindow是目前(VTK版本在9.0之上)最简单最好用的方法

QVTKOpenGLNativeWidget可以理解为QT中单独为VTK设计的载体控件,但只适用于VTK9.0及以上版本,QVTKOpenGLNativeWidget继承于QOpenGLWidget,QOpenGLWidget继承于QWidget,所以其使用方法也与其他常用的QWidget相同。

关键就是使用其setRenderWindow()添加VTK的renderwindow,而要想正确添加,需要VTK使用vtkGenericOpenGLRenderWindow

使用示例:

/// .h
#include <vtkGenericOpenGLRenderWindow>
#include <QVTKOpenGLNativeWidget>
#include <QSplitter>

vtkSmartPointer<QVTKOpenGLNativeWidget> m_pcdVtkWidget;
vtkSmartPointer<vtkGenericOpenGLRenderWindow> m_renderWindow;
vtkSmartPointer<QSplitter> m_splitter;
/// .cpp 
m_pcdVtkWidget = vtkSmartPointer<QVTKOpenGLNativeWidget>::new();
m_renderWindow = vtkSmartPointer<vtkGenericOpenGLRenderWindow>::new();
m_renderer = vtkSmartPointer<vtkRenderer>::New();
m_pcdVtkWidget->setRenderWindow(m_renderWindow); // 添加VTK窗口
m_splitter->addWidget(m_pcdVtkWidget); // 即可同其他QWidget一样使用

注意:

  1. 有些环境需要添加额外设置:

    vtkOpenGLRenderWindow::SetGlobalMaximumNumberOfMultiSamples(8);
    QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat();
  2. QVTKOpenGLNativeWidge和QVTKWidget都是旧版的方法,新版可能使用不了

  3. vtkGenericOpenGLRenderWindow已有默认的交互方法,不需要额外添加interactor

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇