Я работаю над частью большого проекта.
Моя цель — показать vtkRenderer
в QWidget
, Для этого я написал этот класс:
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. Я связал проект и ВТК и показал нормальный vtkRenderWindow
работает отлично. Есть ли что-то еще, прежде чем QVTKWidget
работает?
Моя установка немного отличается, но код работает. Установка: Qt x64 4.8.4 и VTK 5.10, используя компилятор VS2010 x64.
Сначала добавьте виджет вертикальной компоновки на главный экран пользовательского интерфейса. Я предполагаю, что любой из других макетов будет работать, но я не пробовал их. В редакторе 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();
Надеюсь, что это работает для вас!
Попробуйте установить renderwindow в QVTKWidget и поделиться интерактором этого окна рендеринга и добавить рендер в окно рендеринга как:
..
renderWin->addRenderer(_ren);
QVTKWidget1->SetRenderWindow(renderWin);
renderWin->SetInteractor(QVTKWidget1->GetInteractor());