The object controller class. More...
#include <ObjectController.h>
Public Types | |
enum | ViewMode { TREE, GROUPBOX, BUTTON } |
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... | |
Private Member Functions | |
void | initViewMode () |
initialize the view mode depending on currentViewMode More... | |
Q_PRIVATE_SLOT (d_func(), void saveChange(QtProperty *, const QVariant &)) Q_PRIVATE_SLOT(d_func() | |
void | valueChanged (QtProperty *, const QVariant &)) ViewMode currentViewMode |
variable to choose the type of property browser More... | |
Private Attributes | |
ObjectControllerPrivate * | d_ptr |
private object controller wich contains pointer about object, browser and more More... | |
QVBoxLayout * | layout |
layout which will contains the propertybrowser and, in view mode GROUPBOX and BUTTON, the scroll More... | |
QScrollArea * | scroll |
scroll add to navigate in the property browser 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)
|
override |
destructor of object controller
|
slot |
slot to apply change made by the user in the property editor
ObjectController::ViewMode ObjectController::getViewMode | ( | ) | const |
accessorMethod of the view mode
|
private |
initialize the view mode depending on currentViewMode
bool ObjectController::isModified | ( | ) |
call this to check if a modification was done
QObject * ObjectController::object | ( | ) | const |
accessorMethod of the object contains in the property browser
References d_ptr, layout, and camitk::ObjectControllerPrivate::m_browser.
camitk::ObjectController::Q_ENUM | ( | ViewMode | ) |
|
private |
|
slot |
slot to revert the values of all properties (revert to values in memory)
void ObjectController::setAutoUpdateProperty | ( | bool | autoUpdate | ) |
if set, the properties are immediatly updated in the managed object (default false)
void ObjectController::setObject | ( | QObject * | object | ) |
mutatorMethod of the object at unroll in the property browser
Referenced by PMLExplorerWidget::createNewProperty(), PropertyExplorer::refresh(), PMLExplorerWidget::updateProperty(), and PMLExplorerWidget::updateTarget().
void ObjectController::setViewMode | ( | ViewMode | viewMode | ) |
mutator Method of the view mode
Referenced by PropertyExplorer::eventFilter().
|
private |
variable to choose the type of property browser
|
private |
private object controller wich contains pointer about object, browser and more
Referenced by object().
|
private |
layout which will contains the propertybrowser and, in view mode GROUPBOX and BUTTON, the scroll
Referenced by object().
|
private |
scroll add to navigate in the property browser