2013-09-26 63 views
0

我正在參與大型項目的一部分工作。 我的目標是在QWidget中顯示vtkRenderer。對於我寫了這個類:如何使用QVTKWidget

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

    this->showVTK(); 

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

} 

其中_qVtkWidgetQVTKWidget_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有效之前還有其他事情要做嗎?

回答

1

我的設置是有一點不同,但代碼工作。安裝:Qt x64 4.8.4和VTK 5.10,使用VS2010 x64編譯器。

首先,在主UI屏幕上添加一個verticalLayout小部件。我想其他任何佈局都可以,但我沒有嘗試過。在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(); 

希望這對你有用!

0

嘗試設置在QVTKWidget RenderWindow的和共享提供窗口交互器,並添加渲染渲染窗口:

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