如何使用QVTKWidget

How to use QVTKWidget

本文关键字:QVTKWidget 何使用      更新时间:2023-10-16

我正在做一个大项目的一部分。我的目标是在QWidget中展示vtkRenderer。为此,我写了这门课:

CModelViewWidget::CModelViewWidget(QWidget *parent) :
QWidget(parent)
{
    _qVtkWidget = new QVTKWidget(this,Qt::Widget);
    _rend = vtkRenderer::New();
    this->showVTK();
    _qVtkWidget->GetRenderWindow()->AddRenderer(_rend);
}

其中_qVtkWidget是一个QVTKWidget_rend一个vtkRenderershowVTK()一个向_rend添加一个球体的函数。

我能够编译这些东西,但是当我想测试它们时,程序崩溃了。错误消息是:

[pathToProject]/qtCT/qtcreator-build/bin/mabviewer: symbol lookup error:[pathToProject]/qtCT/qtcreator-build/lib/libplugwdgt_modelviz.so: undefined symbol: _ZN10QVTKWidgetC1EP7QWidget6QFlagsIN2Qt10WindowTypeEE

我正在使用VTK5.8,QTCreator 2.4.1和QT 4.7.4和cmake。我将项目和VTK链接起来,并显示正常的vtkRenderWindow工作正常。在QVTKWidget工作之前,还有其他事情要做吗?

我的设置有点不同,但代码有效。 设置:Qt x64 4.8.4 和 VTK 5.10,使用 VS2010 x64 编译器。

首先,将垂直布局小部件添加到主 UI 屏幕。 我想任何其他布局都可以工作,但我还没有尝试过。 在C++编辑器中尝试:

 _qvtkWidget = new QVTKWidget;
 ui->verticalLayout->addWidget(_qvtkWidget);
 ui->verticalLayout->update();
 _qvtkRenderer = vtkRenderer::New();
 _qvtkWidget->GetRenderWindow->AddRenderer(_qvtkRenderer);
 _qvtkRenderer->SetBackground(0,0,0); 
 _qvtkRenderer->Render();

希望这对你有用!

尝试在QVTKWidget中设置渲染窗口并共享该渲染窗口的交互器,并将渲染器添加到渲染窗口:

..
renderWin->addRenderer(_ren); 
QVTKWidget1->SetRenderWindow(renderWin);
renderWin->SetInteractor(QVTKWidget1->GetInteractor());