百度和google之後,發現本身很孤單,只有本身在研究paraview源碼,如下只爲後來人和本身有共同興趣愛好的人共勉之。qq:569979266.lost&last架構
若是你對paraview的架構毫無頭緒,建議你能夠將pqPipelineApp設爲啓動項,而後逐步跟蹤app
ob->createFilter("filters", "Clip", wavelet);
/// Called when the action is triggered.
virtual void onTriggered(const QString& group, const QString& name)
{ pqSourcesMenuReaction::createSource(group, name); }
QObject::connect(
menuManager, SIGNAL(triggered(const QString&, const QString&)),
this, SLOT(onTriggered(const QString&, const QString&)));
pqSourcesMenuReaction
void pqParaViewMenuBuilders::buildSourcesMenu(QMenu& menu,
void pqObjectInspectorWidget::accept()
void pqObjectPanel::accept()
void pqProxy::setModifiedState(ModifiedState modified)
QObject::connect(this->CurrentPanel->referenceProxy(),
SIGNAL(modifiedStateChanged(pqServerManagerModelItem*)),
this, SLOT(updateAcceptState()));
//-----------------------------------------------------------------------------
void pqObjectInspectorWidget::updateAcceptState()
//-----------------------------------------------------------------------------
void pqObjectInspectorWidget::canAccept(bool status)
this->connect(this->AcceptButton,
SIGNAL(clicked()),
applyPropertiesManager,
SLOT(applyProperties())); 綁定apply按鈕一個事件 applyProperties()按下執行
void pqApplyPropertiesManager::applyProperties()
this->connect(applyPropertiesManager, 繼續執行 accept()
SIGNAL(apply()),
this,
SLOT(accept()));
//-----------------------------------------------------------------------------
void pqPipelineFilter::hideInputIfRequired(pqView* view)
//-----------------------------------------------------------------------------
void pqObjectInspectorWidget::show(pqPipelineSource* source)
//-----------------------------------------------------------------------------
void pqObjectInspectorWidget::accept()
//-----------------------------------------------------------------------------
/// accept the changes made to the properties
/// changes will be propogated down to the server manager
void pqProxyPanel::accept()
{
//-----------------------------------------------------------------------------
void pqPropertyManager::accept()
{
vtkSMProxy* vtkSMSessionProxyManager::NewProxy(vtkPVXMLElement* pelement,
const char* groupname,
const char* proxyname,
const char* subProxyName)
{
object = vtkInstantiator::CreateInstance(cname.str().c_str());
//----------------------------------------------------------------------------
vtkObject* vtkInstantiator::CreateInstance(const char* className)
{
CreateFunction function = vtkInstantiator::CreatorTable->Find(className); 函數指針
if(function) { return function(); }
return 0;
}
vtkInstantiator::RegisterInstantiator("vtkCutter", vtkInstantiatorvtkCutterNew);註冊 函數指針
這樣調用的時候能夠直接經過類名,調用new 函數
vtkClientServerStream
UpdateVTKObjects
UpdateVTKObjects
vtkClientServerInterpreter
//-----------------------------------------------------------------------------
pqPipelineSource* pqObjectBuilder::createFilter(
const QString& group, const QString& name,
QMap<QString, QList<pqOutputPort*> > namedInputs,
ide