The object controller class. More...
#include <ObjectController.h>
Public Types | |
enum | ViewMode { TREE , GROUPBOX , BUTTON } |
The property browser can be shown in different view mode. More... | |
Public Slots | |
void | apply () |
slot to apply change made by the user in the property editor More... | |
void | revert () |
slot to revert the values of all properties (revert to values in memory) More... | |
Public Member Functions | |
ViewMode | getViewMode () const |
accessorMethod of the view mode More... | |
bool | isModified () |
call this to check if a modification was done More... | |
QObject * | object () const |
accessorMethod of the object contains in the property browser More... | |
ObjectController (QWidget *parent=nullptr, ViewMode viewMode=TREE) | |
constructor of object controller with in parameters the parent widget and the view mode (default : TREE) More... | |
Q_ENUM (ViewMode) | |
void | setAutoUpdateProperty (bool) |
if set, the properties are immediatly updated in the managed object (default false) More... | |
void | setObject (QObject *object) |
mutatorMethod of the object at unroll in the property browser More... | |
void | setViewMode (ViewMode viewMode) |
mutator Method of the view mode More... | |
~ObjectController () override | |
destructor of object controller More... | |
The object controller class.
This is a special "magical" widget. It allows one to show the meta properties and dynamic property (see Qt Object Model / Property for lmore information on these). This class also automatically manage camitk::Property for components and actions. It is STRONGLY recommanded to use camitk::Property instead of Qt Meta Object property.
A complete example that show the usability of object controller is available in applications "objectcontroller". The best way to learn how to use this Core facility is to look at this application and the given TestClass. The class PropComponent and PropAction in the tutorials demonstrates how to use camitk::Property instead of Qt Meta Object Property.
An object controller is a sort of property browser where each line represents a property. The object controller automatically build a GUI to access and optionally changed the properties you defined.
There could be many different types of properties, and as many as you want.
In order to handle a list of specific properties for your class, you have three choices:
The first choice is the best as you can specify description, have read only property, define min and max values and step for numeric properties as well as precision for float/double. A camitk::Property is necessarily dynamic. For component and action properties, this is the way to go.
For a class that is neither a component or an action, you can still use the second and third method. The third method does even not need a new class. You have to create a new QObject instance, and add as many dynamic properties as you wish using QObject::setProperty method. You also have to install an event monitor in your class to be notified when a property has changed (see TestClass in "objectcontroller" application).
Three different view mode are available to represent/interact with the property values:
The view mode can be changed at any time, even at run-time (see the "objectcontroller" application).
How to use this class:
The available property type are (see example in the "objectcontroller" application (tutorials), the tutorial class PropComponent and PropAction and (if you feel adventurous) also QtVariantProperty in tools/qpropertybrowser for a complete list of associated constraints):
Property Type | Property Type Id |
---|---|
int | QVariant::Int |
double | QVariant::Double |
bool | QVariant::Bool |
QString | QVariant::String |
QVector3D | QVariant::QVector3D |
QColor | QVariant::Color |
QDate | QVariant::Date |
QTime | QVariant::Time |
QChar | QVariant::Char |
QDateTime | QVariant::DateTime |
QPoint | Variant::Point |
QPointF | QVariant::PointF |
QKeySequence | QVariant::KeySequence |
QLocale | QVariant::Locale |
QSize | QVariant::Size |
QSizeF | QVariant::SizeF |
QRect | QVariant::Rect |
QRectF | QVariant::RectF |
QSizePolicy | QVariant::SizePolicy |
QFont | QVariant::Font |
QCursor | QVariant::Cursor |
enum | enumTypeId() |
flag | flagTypeId() |
group | groupTypeId() |
The property browser can be shown in different view mode.
Use getViewMode() to get the information about the view mode.
constructor of object controller with in parameters the parent widget and the view mode (default : TREE)
References camitk::ObjectControllerPrivate::m_browser, camitk::ObjectControllerPrivate::m_manager, camitk::ObjectControllerPrivate::m_object, camitk::ObjectControllerPrivate::m_readOnlyManager, setAutoUpdateProperty(), and QtAbstractPropertyBrowser::setFactoryForManager().
|
override |
destructor of object controller
|
slot |
slot to apply change made by the user in the property editor
References camitk::ObjectControllerPrivate::applyChange().
ObjectController::ViewMode ObjectController::getViewMode | ( | ) | const |
accessorMethod of the view mode
bool ObjectController::isModified | ( | ) |
call this to check if a modification was done
References camitk::ObjectControllerPrivate::saveChangeValue.
QObject * ObjectController::object | ( | ) | const |
accessorMethod of the object contains in the property browser
References camitk::ObjectControllerPrivate::m_object.
Referenced by revert(), setObject(), and setViewMode().
camitk::ObjectController::Q_ENUM | ( | ViewMode | ) |
|
slot |
slot to revert the values of all properties (revert to values in memory)
References object(), camitk::ObjectControllerPrivate::saveChangeValue, and setObject().
void ObjectController::setAutoUpdateProperty | ( | bool | autoUpdate | ) |
if set, the properties are immediatly updated in the managed object (default false)
References camitk::ObjectControllerPrivate::m_manager.
Referenced by ObjectController(), and camitk::ActionWidget::setAutoUpdateProperty().
void ObjectController::setObject | ( | QObject * | object | ) |
mutatorMethod of the object at unroll in the property browser
References camitk::ObjectControllerPrivate::addClassProperties(), camitk::ObjectControllerPrivate::addDynamicProperties(), camitk::ObjectControllerPrivate::groupProperties, camitk::ObjectControllerPrivate::m_browser, camitk::ObjectControllerPrivate::m_object, camitk::ObjectControllerPrivate::m_topLevelProperties, object(), QtAbstractPropertyBrowser::removeProperty(), camitk::ObjectControllerPrivate::restoreExpandedState(), camitk::ObjectControllerPrivate::saveChangeValue, and camitk::ObjectControllerPrivate::saveExpandedState().
Referenced by camitk::ActionWidget::ActionWidget(), PMLExplorerWidget::createNewProperty(), camitk::SettingsDialog::editSettings(), PropertyExplorer::refresh(), revert(), setViewMode(), camitk::ActionWidget::update(), and PMLExplorerWidget::updateTarget().
void ObjectController::setViewMode | ( | ViewMode | viewMode | ) |
mutator Method of the view mode
References BUTTON, GROUPBOX, camitk::ObjectControllerPrivate::m_browser, object(), setObject(), and TREE.