123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- /*=========================================================================
- Library: CTK
-
- Copyright (c) 2010 Kitware Inc.
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.commontk.org/LICENSE
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- =========================================================================*/
- #ifndef __ctkWorkflowTabWidget_h
- #define __ctkWorkflowTabWidget_h
- // Qt includes
- #include <QTabWidget>
- // CTK includes
- #include "ctkWorkflowAbstractPagedWidget.h"
- #include "ctkPimpl.h"
- #include "CTKWidgetsExport.h"
- class ctkWorkflowTabWidgetPrivate;
- ///
- /// \brief ctkWorkflowStackedWidget is the basis for a workflow with a user
- /// interface containing a QTabWidget.
- ///
- /// The client area is a QTabWidget, onto which step-specific
- /// widgets can be placed.
- ///
- /// Multiple workflow steps can correspond to the same page of the
- /// QStackedWidget. The main widget can be inserted directly inside
- /// another user interface.
- class CTK_WIDGETS_EXPORT ctkWorkflowTabWidget : public ctkWorkflowAbstractPagedWidget
- {
- Q_OBJECT
- public:
- typedef ctkWorkflowAbstractPagedWidget Superclass;
- explicit ctkWorkflowTabWidget(QWidget* newParent = 0);
- virtual ~ctkWorkflowTabWidget(){}
- /// Provided for advanced customization: get the client area.
- /// A workflow containing a user interface is made up of steps
- /// (ctkWorkflowWidgetStep). Each step should either:
- /// 1) reimplement ctkWorkflowWidgetStep::populateStepWidgetsList or
- /// set its populateStepWidgetsListCommand to point to a method that
- /// will add the custom-step's widgets to the list; or
- /// 2) reimplement ctkWorkflowWidgetStep::showUserInterface or set
- /// its showUserInterfaceCommand to point to a method that will
- /// display the step's user interface. Within that method, each of
- /// the custom step's widgets should be added to the workflow
- /// widget's clientArea using the addWidget() function.
- /// If you do not associate a layout manager with the clientArea,
- /// the default layout manager is a QBoxLayout with direction
- /// QBoxLayout::TopToBottom. Use the function
- /// setClientAreaDirection() to change the direction.
- /// For additional customization of layouts, note that
- /// ctkWorkflowTabWidget()->clientArea()->setLayout() will likely
- /// not allow you to customize the client area layout. Customize
- /// specific pages instead using
- /// ctkWorkflowTabWidget::getWidgetFromIndex(index)->setLayout()
- virtual QTabWidget* clientArea();
- /// Provided for advanced customization: get the widget
- /// corresponding to the page of the given index
- virtual QWidget* getWidgetFromIndex(int index);
- protected:
- /// Add a widget to a new page of the client area.
- /// The label will be the name of the tab.
- virtual void addWidgetToClientArea(QWidget* widget, const QString& label);
- /// Set the current widget to that of the page containing the given widget
- virtual void setCurrentWidget(QWidget* widget) ;
- private:
- CTK_DECLARE_PRIVATE(ctkWorkflowTabWidget);
- };
- #endif
|