0

我正在参与一个大项目。我的目标是vtkRenderer在 a 中显示 a QWidget。为此,我写了这堂课:

CModelViewWidget::CModelViewWidget(QWidget *parent) :
QWidget(parent)
{
    _qVtkWidget = new QVTKWidget(this,Qt::Widget);
    _rend = vtkRenderer::New();

    this->showVTK();

    _qVtkWidget->GetRenderWindow()->AddRenderer(_rend);

}

其中_qVtkWidget是 a QVTKWidget_rendavtkRenderershowVTK()一个将球体添加到 的函数_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吗?

4

2 回答 2

1

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

首先,将一个verticalLayout 小部件添加到主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();

希望这对你有用!

于 2013-10-07T17:31:37.890 回答
0

Try to set renderwindow in QVTKWidget and share interactor of that render window and add renderer to render window as:

..
renderWin->addRenderer(_ren); 
QVTKWidget1->SetRenderWindow(renderWin);
renderWin->SetInteractor(QVTKWidget1->GetInteractor());
于 2013-09-27T12:24:11.920 回答