90 likes | 101 Views
Manage multiple widgets effectively with pqMultiView - a QSplitter based container offering horizontal/vertical view splitting and widget referencing. Enhanced through pqMultiViewManager for streamlined view manipulation and state handling.
E N D
ParaQ's MultiView Framework • MultiView objects • MultiView with Server Manager • Bringing it all together • Improvements
MultiView objects • pqMultiView • Generic QSplitter based widget container for managing multiple widgets. • Provides methods for splitting a view in half horizontally or vertically, and removing views. • Provides handles for referencing managed widgets.
MultiView objects • pqMultiView is really nothing more than an interface for dynamic manipulation of QSplitters
MultiView objects • pqMultiViewManager • Specialization of pqMultiView which uses pqMultiViewFrame for the views. • pqMultiViewFrame provides GUI buttons for manipulating the view. • Provides signals for receivers to put their own widgets in the view. • Provides functionality for saving/restoring state.
MultiView objects • A lone pqMultiViewManager allows creation and deletion of blank views.
QVTKWidget QVTKWidget MultiView & Server Manager • MultiView Render Module wants locations and sizes for all render windows. • pqMultiViewRenderModuleUpdater latches onto all QVTKWidgets and watches for when windows resize and move. MultiView RenderModule RenderModule RenderModule
View Manipulation MultiView Framework QVTKWidget Factory & Render Modules Bringing it all together • When signaled ParaQ places QVTKWidgets in the views. • Helper routine creates a QVTKWidget and keeps render modules updated.
Improvements • Support easier customization: • Move functionality from pqMultiViewManager to pqMultiView. • Move signals and slots down. • Move save/restore down. • Change pqMultiViewManager to not inherit from pqMultiView. Signals/slots are easier to customize than deriving from pqMultiView. • Example: easily allows for a Prism-like single view manipulation toolbar for all views.