VTK中通过vtkCommand定义用户方法在其他vtkRenderWindow显示

如需转载请标明出处: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


 



 

你可能感兴趣的:(qt,VTK)