2013-09-26 2 views
0

Я работаю над частью большого проекта. Моя цель показать vtkRenderer в QWidget. Для этого я написал этот класс:Как использовать QVTKWidget

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

    this->showVTK(); 

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

} 

где _qVtkWidget является QVTKWidget, _rend в vtkRenderer и showVTK() функцию, которая добавляет шар к _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.

Во-первых, добавьте виджет вертикальногоLayout на главный экран пользовательского интерфейса. Я полагаю, что любой из других макетов будет работать, но я их не пробовал. В редакторе 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

Попробуйте установить RenderWindow в QVTKWidget и поделиться Interactor этого вынести окно и добавить средства визуализации для отображения окна, как:

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