如需转载请标明出处:http://blog.csdn.net/itas109
在qt中定义了两个qvtkwidget窗口,命名为qvtkWidget和qvtkWidget_2
但是要一个qvtkWidget调用了vtkCommand的用户方法后,显示在qvtkWidget_2上面。
class vtkWidgetCall : public vtkCommand { public: static vtkWidgetCall *New() { return new vtkWidgetCall; } public: virtual void Execute(vtkObject *caller, unsigned long eventId, void *callData) { pWin2->Render(); //error } };
开始的时候,在vtkCommand中直接调用pWin2->Render();
报错,说没有pWin2
后来通过查找vtk用户手册,找到一种方法:在自定义方法里面,定义一个pWin2,然后在初始化pWin2在观察者AddObserver之前
class vtkWidgetCall : public vtkCommand//,public ROI { public: static vtkWidgetCall *New() { return new vtkWidgetCall; } public: virtual void Execute(vtkObject *caller, unsigned long eventId, void *callData) { pWin2->Render(); } public: vtkRenderWindow *pWin2;//定义个pWin2,然后在初始化pWin2在观察者AddObserver之前 };
pWin2初始化
vtkWidgetCall *pCall = vtkWidgetCall::New(); pCall->pWin2 = pWin2;//初始化pWin2即可
这样一来,两个不同的qvtkwidget就可以互相关联了
如需转载请标明出处:http://blog.csdn.net/itas109