[Paraview] pqViewManager in Clone2
Alexis Chan
alexisc at stanfordalumni.org
Tue Mar 8 15:06:21 EST 2011
Hi
I tried to use the recommended method below in my ParaView plugin:
// Get Application Core
pqApplicationCore* core = pqApplicationCore::instance();
// Get Object Builder to create new Views, Server etc
pqObjectBuilder* builder = core->getObjectBuilder();
// Get the Server Manager Model so that we can get current server
pqServerManagerModel* serverManager = core->getServerManagerModel();
if (serverManager->getNumberOfItems<pqServer*>()== 1) // Assuming
that there is only 1 server
{
pqServer* server = serverManager->getItemAtIndex<pqServer*>(0);
if (serverManager->getNumberOfItems<pqView*> () == 1) // Assuming
that there is only 1 view created
{
pqView* view1 = serverManager->getItemAtIndex<pqView*>(0);
// Get QWidget from first view
QWidget* viewWidget = view1->getWidget();
//Create GridLayout Widget from first view's widget
QGridLayout* gl = new QGridLayout(viewWidget);
//create second view
pqRenderView* view2 = qobject_cast<pqRenderView*>(
builder->createView(pqRenderView::renderViewType(), server));
//Add second view's widget to gridlayout
gl->addWidget(view2->getWidget(),1,1);
//Create third view
//create third view
pqRenderView* view3 = qobject_cast<pqRenderView*>(
builder->createView(pqRenderView::renderViewType(), server));
//Add third view's widget to gridlayout
gl->addWidget(view3->getWidget(),2,2);
}
}
The debugger fails at
pqRenderView* view3 = qobject_cast<pqRenderView*>(
builder->createView(pqRenderView::renderViewType(), server));
pqObjectBuilder.cxx : pxm->RegisterProxy("views", name.toAscii().data(), proxy);
qwidget.h: inline QSize QWidget::size() const { return data->crect.size(); }
because data is null.
name.toAscii is "RenderView3".
Can someone let me know what I mess up in the code? Thanks.
* **
*>* > On Thu, Mar 18, 2010 at 11:22 AM, Utkarsh Ayachit
*>* > <utkarsh.ayachit at kitware.com
<http://www.paraview.org/mailman/listinfo/paraview>> wrote:
*>* >>
*>* >> Hello,
*>* >>
*>* >> If you are creating a custom application which always has 4 render
*>* >> windows, then I'd suggest not even using the pqViewManager.
*>* >> Simply create the 4 views yourself and pack them into a QWidget using
*>* >> a QGridLayout. For example, the following code can be used after a
*>* >> server connection has been made to set up the 4 views.
*>* >>
*>* >> QWidget* centralWidget = new QWidget();
*>* >> mainWindow->setCentralWidget(centralWidget);
*>* >> QGridLayout* gl = new QGridLayout(centralWidget);
*>* >>
*>* >> for (int xx=0; xx < 2; xx++)
*>* >> {
*>* >> for (int yy=0; yy < 2; yy++)
*>* >> {
*>* >> pqRenderView* view = qobject_cast<pqRenderView*>(
*>* >> ob->createView(pqRenderView::renderViewType(), server));
*>* >> gl->addWidget(view->getWidget(), yy, xx);
*>* >> }
*>* >> }
*>* >>
*>* >> Utkarsh
*>* >>
*>* >> On Thu, Mar 18, 2010 at 10:22 AM, Adebayo Olowoyeye
*>* >> <aolowoye at umail.iu.edu
<http://www.paraview.org/mailman/listinfo/paraview>> wrote:
*>* >> > Hi,
*>* >> >
*>* >> > I am attempting to use the Clone2 CustomApplication example to write a
*>* >> > custom application in C++. The wiki documentation on Custom
*>* >> > Applications
*>* >> > suggest using pqViewManager to control the view of the application.
*>* >> >
*>* >> > I want to split the frame into four different windows, each with its
*>* own
*>* >> > view. I am assuming the program starts with one frame and one view.
*>* Is
*>* >> > this assumption correct?
*>* >> >
*>* >> > I reference the pqViewManager with the following code:
*>* >> > this->Internals->MultiViewManager
*>* >> >
*>* >> > the active view (I'm guessing the only view at this point is):
*>* >> > pqView* view =
*>* >> > this->Internals->MultiViewManager->getActiveView();
*>* >> >
*>* >> > This problem is there are no public methods to split the frame in
*>* >> > pqViewManager. It is possible to get the pqMultiViewFrame:
*>* >> > pqMultiViewFrame * multiViewFrame =
*>* >> > this->Internals->MultiViewManager->getFrame(view);
*>* >> >
*>* >> > I've tested this by:
*>* >> > multiViewFrame->setTitle("HELLO WORLD!");
*>* >> >
*>* >> > and it works, but I've tried multiple tries to get the frame to split
*>* >> > without success. Any insight will help.
*>* >> > Thanks!
*>* >> >
*>* >> > _______________________________________________
*>* >> > Powered by www.kitware.com
*>* >> >
*>* >> > Visit other Kitware open-source projects at
*>* >> > http://www.kitware.com/opensource/opensource.html
*>* >> >
*>* >> > Please keep messages on-topic and check the ParaView Wiki at:
*>* >> > http://paraview.org/Wiki/ParaView
*>* >> >
*>* >> > Follow this link to subscribe/unsubscribe:
*>* >> > http://www.paraview.org/mailman/listinfo/paraview
*>* >> >
*>* >> >
*>* >
*>* >
*>* > _______________________________________________
*>* > Powered by www.kitware.com
*>* >
*>* > Visit other Kitware open-source projects at
*>* > http://www.kitware.com/opensource/opensource.html
*>* >
*>* > Please keep messages on-topic and check the ParaView Wiki at:
*>* > http://paraview.org/Wiki/ParaView
*>* >
*>* > Follow this link to subscribe/unsubscribe:
*>* > http://www.paraview.org/mailman/listinfo/paraview
*>* >
*>* >
*>*
*
--
Alexis YL Chan <http://alexisylchan.wordpress.com/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.paraview.org/pipermail/paraview/attachments/20110308/f69fbfb0/attachment-0001.htm>
More information about the ParaView
mailing list