#include "qmetaobjectbuilder_p.h"
-#include <QtDeclarative/qdeclarativeinfo.h>
-
#include <QDebug>
+#include <QtDeclarative/qdeclarativeinfo.h>
/*
if (QString(staticMetaObject.className()) == "DeclarativeLabel") { \
for (int i = 0; i < staticMetaObject.propertyCount(); ++i) { \
qDebug(" prop: %d=%s", i, staticMetaObject.property(i).name()); \
} \
- qDebug("class: DeclarativeObject"); \
- for (int i = 0; i < DeclarativeObject::staticMetaObject.propertyCount(); ++i) { \
- qDebug(" prop: %d=%s", i, DeclarativeObject::staticMetaObject.property(i).name()); \
+ qDebug("class: AbstractDeclarativeObject"); \
+ for (int i = 0; i < AbstractDeclarativeObject::staticMetaObject.propertyCount(); ++i) { \
+ qDebug(" prop: %d=%s", i, AbstractDeclarativeObject::staticMetaObject.property(i).name()); \
} \
} \
if (QString(staticMetaObject.className()) == "DeclarativeLabel") { \
} \
*/
-#define CUSTOM_METAOBJECT(ClassName, BaseType, WidgetType, WidgetVariable) \
+#define CUSTOM_METAOBJECT(ClassName, WidgetType, WidgetVariable) \
QMetaObject ClassName::staticMetaObject;\
bool ClassName::metaObjectInitialized = ClassName::initializeMetaObject(); \
bool ClassName::initializeMetaObject() \
QMetaObjectBuilder builder; \
const QMetaObject *mo = &WidgetType::staticMetaObject; \
builder.addMetaObject(mo); \
- builder.addMetaObject(&DeclarativeObject::staticMetaObject); \
+ builder.addMetaObject(&AbstractDeclarativeObject::staticMetaObject); \
builder.setSuperClass(WidgetType::staticMetaObject.superClass()); \
builder.setClassName(""#ClassName); \
ClassName::staticMetaObject = *builder.toMetaObject(); \
{ \
if (call == QMetaObject::ReadProperty || call == QMetaObject::WriteProperty) { \
if (id >= WidgetType::staticMetaObject.propertyCount()) { \
- id = DeclarativeObject::qt_metacall(call, id - WidgetType::staticMetaObject.propertyCount() + 1, argv); \
+ id = AbstractDeclarativeObject::qt_metacall(call, id - WidgetType::staticMetaObject.propertyCount() + 1, argv); \
id += WidgetType::staticMetaObject.propertyCount() - 1; \
} else { \
id = WidgetVariable->qt_metacall(call, id, argv); \
return id; \
}
-static void connectAllSignals(QObject *sender, QObject *receiver)
+// AbstractDeclarativeObject
+AbstractDeclarativeObject::AbstractDeclarativeObject(QObject *parent)
+ : QObject(parent)
{
- for (int i = 0; i < sender->metaObject()->methodCount(); ++i) {
- const QMetaMethod method = sender->metaObject()->method(i);
- if (method.methodType() == QMetaMethod::Signal) {
- const QByteArray signature = "2" + QByteArray(method.signature());
- QObject::connect(sender, signature.data(), receiver, signature.data());
- }
- }
}
-// DeclarativeObject
-DeclarativeObject::DeclarativeObject(QObject *parent)
- : QObject(parent)
+AbstractDeclarativeObject::~AbstractDeclarativeObject()
{
}
-DeclarativeObject::~DeclarativeObject()
+QDeclarativeListProperty<QObject> AbstractDeclarativeObject::data()
{
+ return QDeclarativeListProperty<QObject>(this, 0, AbstractDeclarativeObject::data_append,
+ AbstractDeclarativeObject::data_count,
+ AbstractDeclarativeObject::data_at,
+ AbstractDeclarativeObject::data_clear);
}
-QDeclarativeListProperty<QObject> DeclarativeObject::data()
+void AbstractDeclarativeObject::dataAppend(QObject *)
{
- return QDeclarativeListProperty<QObject>(this, 0, DeclarativeObject::data_append,
- DeclarativeObject::data_count,
- DeclarativeObject::data_at,
- DeclarativeObject::data_clear);
}
-void DeclarativeObject::dataAppend(QObject *)
+int AbstractDeclarativeObject::dataCount() const
{
+ return 0;
}
-int DeclarativeObject::dataCount()
+QObject* AbstractDeclarativeObject::dataAt(int) const
{
return 0;
}
-QObject* DeclarativeObject::dataAt(int)
+void AbstractDeclarativeObject::dataClear()
{
- return 0;
}
-void DeclarativeObject::dataClear()
+static void connectAllSignals(QObject *sender, QObject *receiver)
{
+ for (int i = 0; i < sender->metaObject()->methodCount(); ++i) {
+ const QMetaMethod method = sender->metaObject()->method(i);
+ if (method.methodType() == QMetaMethod::Signal) {
+ const QByteArray signature = "2" + QByteArray(method.signature());
+ QObject::connect(sender, signature.data(), receiver, signature.data());
+ }
+ }
}
-void DeclarativeObject::data_append(QDeclarativeListProperty<QObject> *property, QObject *object)
+void AbstractDeclarativeObject::data_append(QDeclarativeListProperty<QObject> *property, QObject *object)
{
if (!object)
return;
- DeclarativeObject *that = dynamic_cast<DeclarativeObject*>(property->object);
+ AbstractDeclarativeObject *that = dynamic_cast<AbstractDeclarativeObject*>(property->object);
if (that)
that->dataAppend(object);
else
qWarning("cast went wrong in data_append");
}
-int DeclarativeObject::data_count(QDeclarativeListProperty<QObject> *property)
+int AbstractDeclarativeObject::data_count(QDeclarativeListProperty<QObject> *property)
{
- DeclarativeObject *that = dynamic_cast<DeclarativeObject*>(property->object);
+ AbstractDeclarativeObject *that = dynamic_cast<AbstractDeclarativeObject*>(property->object);
if (that)
return that->dataCount();
else {
}
}
-QObject* DeclarativeObject::data_at(QDeclarativeListProperty<QObject> *property, int index)
+QObject* AbstractDeclarativeObject::data_at(QDeclarativeListProperty<QObject> *property, int index)
{
- DeclarativeObject *that = dynamic_cast<DeclarativeObject*>(property->object);
+ AbstractDeclarativeObject *that = dynamic_cast<AbstractDeclarativeObject*>(property->object);
if (that)
return that->dataAt(index);
else {
}
}
-void DeclarativeObject::data_clear(QDeclarativeListProperty<QObject> *property)
+void AbstractDeclarativeObject::data_clear(QDeclarativeListProperty<QObject> *property)
{
- DeclarativeObject *that = dynamic_cast<DeclarativeObject*>(property->object);
+ AbstractDeclarativeObject *that = dynamic_cast<AbstractDeclarativeObject*>(property->object);
if (that)
that->dataClear();
else
}
// DeclarativeHBoxLayout
-DeclarativeHBoxLayout::DeclarativeHBoxLayout(QObject *parent)
- : DeclarativeObject(parent)
- , m_layout(new QHBoxLayout)
+DeclarativeHBoxLayout::DeclarativeHBoxLayout(QObject *parent) : DeclarativeBoxLayout<QHBoxLayout>(parent)
{
- connectAllSignals(m_layout, this);
+ connectAllSignals(m_proxiedObject, this);
}
-DeclarativeHBoxLayout::~DeclarativeHBoxLayout()
-{
- delete m_layout;
-}
-
-QObject* DeclarativeHBoxLayout::object()
-{
- return m_layout;
-}
-
-void DeclarativeHBoxLayout::dataAppend(QObject *object)
-{
- DeclarativeWidget *widget = dynamic_cast<DeclarativeWidget*>(object);
- DeclarativeHBoxLayout *hboxLayout = dynamic_cast<DeclarativeHBoxLayout*>(object);
- DeclarativeVBoxLayout *vboxLayout = dynamic_cast<DeclarativeVBoxLayout*>(object);
-
- if (widget) {
- m_children.append(object);
- m_layout->addWidget(qobject_cast<QWidget*>(widget->object()));
- } else if (hboxLayout) {
- m_children.append(object);
- m_layout->addLayout(qobject_cast<QLayout*>(hboxLayout->object()));
- } else if (vboxLayout) {
- m_children.append(object);
- m_layout->addLayout(qobject_cast<QLayout*>(vboxLayout->object()));
- } else {
- qmlInfo(this) << "Can not contain element of type " << object->metaObject()->className();
- }
-}
-
-int DeclarativeHBoxLayout::dataCount()
-{
- return m_children.count();
-}
-
-QObject* DeclarativeHBoxLayout::dataAt(int index)
-{
- return m_children.at(index);
-}
-
-void DeclarativeHBoxLayout::dataClear()
-{
- qDeleteAll(m_children);
- m_children.clear();
-}
-
-CUSTOM_METAOBJECT(DeclarativeHBoxLayout, DeclarativeObject, QHBoxLayout, m_layout)
+CUSTOM_METAOBJECT(DeclarativeHBoxLayout, QHBoxLayout, m_proxiedObject)
// DeclarativeVBoxLayout
-DeclarativeVBoxLayout::DeclarativeVBoxLayout(QObject *parent)
- : DeclarativeObject(parent)
- , m_layout(new QVBoxLayout)
-{
- connectAllSignals(m_layout, this);
-}
-
-DeclarativeVBoxLayout::~DeclarativeVBoxLayout()
-{
- delete m_layout;
-}
-
-QObject* DeclarativeVBoxLayout::object()
-{
- return m_layout;
-}
-
-void DeclarativeVBoxLayout::dataAppend(QObject *object)
-{
- DeclarativeWidget *widget = dynamic_cast<DeclarativeWidget*>(object);
- DeclarativeHBoxLayout *hboxLayout = dynamic_cast<DeclarativeHBoxLayout*>(object);
- DeclarativeVBoxLayout *vboxLayout = dynamic_cast<DeclarativeVBoxLayout*>(object);
-
- if (widget) {
- m_children.append(object);
- m_layout->addWidget(qobject_cast<QWidget*>(widget->object()));
- } else if (hboxLayout) {
- m_children.append(object);
- m_layout->addLayout(qobject_cast<QLayout*>(hboxLayout->object()));
- } else if (vboxLayout) {
- m_children.append(object);
- m_layout->addLayout(qobject_cast<QLayout*>(vboxLayout->object()));
- } else {
- qmlInfo(this) << "Can not contain element of type " << object->metaObject()->className();
- }
-}
-
-int DeclarativeVBoxLayout::dataCount()
-{
- return m_children.count();
-}
-
-QObject* DeclarativeVBoxLayout::dataAt(int index)
-{
- return m_children.at(index);
-}
-
-void DeclarativeVBoxLayout::dataClear()
+DeclarativeVBoxLayout::DeclarativeVBoxLayout(QObject *parent) : DeclarativeBoxLayout<QVBoxLayout>(parent)
{
- qDeleteAll(m_children);
- m_children.clear();
+ connectAllSignals(m_proxiedObject, this);
}
-CUSTOM_METAOBJECT(DeclarativeVBoxLayout, DeclarativeObject, QVBoxLayout, m_layout)
+CUSTOM_METAOBJECT(DeclarativeVBoxLayout, QVBoxLayout, m_proxiedObject)
// DeclarativeWidget
-DeclarativeWidget::DeclarativeWidget(QObject *parent)
- : DeclarativeObject(parent)
- , m_widget(new QWidget)
+DeclarativeWidget::DeclarativeWidget(QObject *parent) : DeclarativeObjectProxy<QWidget>(parent)
{
- connectAllSignals(m_widget, this);
-}
-
-DeclarativeWidget::~DeclarativeWidget()
-{
- delete m_widget;
-}
-
-QObject* DeclarativeWidget::object()
-{
- return m_widget;
+ connectAllSignals(m_proxiedObject, this);
}
void DeclarativeWidget::dataAppend(QObject *object)
{
- DeclarativeWidget *widget = dynamic_cast<DeclarativeWidget*>(object);
- DeclarativeHBoxLayout *hboxLayout = dynamic_cast<DeclarativeHBoxLayout*>(object);
- DeclarativeVBoxLayout *vboxLayout = dynamic_cast<DeclarativeVBoxLayout*>(object);
-
- if (widget) {
- if (m_widget->layout()) {
- qmlInfo(this) << "Can not add Widget since a Layout is set already";
+ AbstractDeclarativeObject *declarativeObject = dynamic_cast<AbstractDeclarativeObject*>(object);
+ if (declarativeObject) {
+ QWidget *widget = qobject_cast<QWidget*>(declarativeObject->object());
+ if (widget) {
+ if (m_proxiedObject->layout()) {
+ qmlInfo(this) << "Can not add Widget since a Layout is set already";
+ return;
+ }
+
+ m_children.append(object);
+ widget->setParent(m_proxiedObject);
return;
}
- m_children.append(object);
- qobject_cast<QWidget*>(widget->object())->setParent(m_widget);
- } else if (hboxLayout) {
- // TODO: error when widget is set
-
- m_children.append(object);
- m_widget->setLayout(qobject_cast<QLayout*>(hboxLayout->object()));
- } else if (vboxLayout) {
- // TODO: error when widget is set
+ QLayout *layout = qobject_cast<QLayout*>(declarativeObject->object());
+ if (layout) {
+ // TODO: error when widget is set
- m_children.append(object);
- m_widget->setLayout(qobject_cast<QLayout*>(vboxLayout->object()));
- } else {
- m_children.append(object);
+ m_children.append(object);
+ m_proxiedObject->setLayout(layout);
+ return;
+ }
}
-}
-
-int DeclarativeWidget::dataCount()
-{
- return m_children.count();
-}
-
-QObject *DeclarativeWidget::dataAt(int index)
-{
- return m_children.at(index);
-}
-void DeclarativeWidget::dataClear()
-{
- qDeleteAll(m_children);
- m_children.clear();
+ DeclarativeObjectProxy<QWidget>::dataAppend(object);
}
-CUSTOM_METAOBJECT(DeclarativeWidget, DeclarativeObject, QWidget, m_widget)
+CUSTOM_METAOBJECT(DeclarativeWidget, QWidget, m_proxiedObject)
// DeclarativeLabel
-DeclarativeLabel::DeclarativeLabel(QObject *parent)
- : DeclarativeWidget(parent)
- , m_label(new QLabel)
-{
- connectAllSignals(m_label, this);
-}
-
-DeclarativeLabel::~DeclarativeLabel()
+DeclarativeLabel::DeclarativeLabel(QObject *parent) : DeclarativeObjectProxy<QLabel>(parent)
{
- delete m_label;
+ connectAllSignals(m_proxiedObject, this);
}
-QObject* DeclarativeLabel::object()
-{
- return m_label;
-}
-
-CUSTOM_METAOBJECT(DeclarativeLabel, DeclarativeWidget, QLabel, m_label)
+CUSTOM_METAOBJECT(DeclarativeLabel, QLabel, m_proxiedObject)
// DeclarativeTabWidget
-DeclarativeTabWidget::DeclarativeTabWidget(QObject *parent)
- : DeclarativeWidget(parent)
- , m_tabWidget(new QTabWidget)
-{
- connectAllSignals(m_tabWidget, this);
-}
-
-DeclarativeTabWidget::~DeclarativeTabWidget()
-{
- delete m_tabWidget;
-}
-
-QObject* DeclarativeTabWidget::object()
+DeclarativeTabWidget::DeclarativeTabWidget(QObject *parent) : DeclarativeObjectProxy<QTabWidget>(parent)
{
- return m_tabWidget;
+ connectAllSignals(m_proxiedObject, this);
}
void DeclarativeTabWidget::dataAppend(QObject *object)
{
- DeclarativeWidget *widget = dynamic_cast<DeclarativeWidget*>(object);
-
- if (widget) {
- // TODO: error when layout is set
- m_children.append(object);
- m_tabWidget->addTab(qobject_cast<QWidget*>(widget->object()), "MyTab");
- } else {
- // TODO: error unknown type
- }
-}
+ AbstractDeclarativeObject *declarativeObject = dynamic_cast<AbstractDeclarativeObject*>(object);
-int DeclarativeTabWidget::dataCount()
-{
- return m_children.count();
-}
+ if (declarativeObject) {
+ QWidget *widget = qobject_cast<QWidget*>(declarativeObject->object());
+ if (widget) {
+ // TODO: error when layout is set
+ m_children.append(object);
+ m_proxiedObject->addTab(widget, "MyTab");
+ return;
+ }
-QObject *DeclarativeTabWidget::dataAt(int index)
-{
- return m_children.at(index);
-}
+ QLayout *layout = qobject_cast<QLayout*>(declarativeObject->object());
+ if (layout) {
+ qmlInfo(this) << "Can not add QLayout to QTabWidget";
+ return;
+ }
+ }
-void DeclarativeTabWidget::dataClear()
-{
- qDeleteAll(m_children);
- m_children.clear();
+ DeclarativeObjectProxy<QTabWidget>::dataAppend(object);
}
-CUSTOM_METAOBJECT(DeclarativeTabWidget, DeclarativeWidget, QTabWidget, m_tabWidget)
+CUSTOM_METAOBJECT(DeclarativeTabWidget, QTabWidget, m_proxiedObject)
// DeclarativePushButton
-DeclarativePushButton::DeclarativePushButton(QObject *parent)
- : DeclarativeWidget(parent)
- , m_pushButton(new QPushButton)
-{
- connectAllSignals(m_pushButton, this);
-}
-
-DeclarativePushButton::~DeclarativePushButton()
+DeclarativePushButton::DeclarativePushButton(QObject *parent) : DeclarativeObjectProxy<QPushButton>(parent)
{
- delete m_pushButton;
+ connectAllSignals(m_proxiedObject, this);
}
-QObject* DeclarativePushButton::object()
-{
- return m_pushButton;
-}
-
-CUSTOM_METAOBJECT(DeclarativePushButton, DeclarativeWidget, QPushButton, m_pushButton)
+CUSTOM_METAOBJECT(DeclarativePushButton, QPushButton, m_proxiedObject)
// DeclarativeCheckBox
-DeclarativeCheckBox::DeclarativeCheckBox(QObject *parent)
- : DeclarativeWidget(parent)
- , m_checkBox(new QCheckBox)
-{
- connectAllSignals(m_checkBox, this);
-}
-
-DeclarativeCheckBox::~DeclarativeCheckBox()
+DeclarativeCheckBox::DeclarativeCheckBox(QObject *parent) : DeclarativeObjectProxy<QCheckBox>(parent)
{
- delete m_checkBox;
+ connectAllSignals(m_proxiedObject, this);
}
-QObject* DeclarativeCheckBox::object()
-{
- return m_checkBox;
-}
-
-CUSTOM_METAOBJECT(DeclarativeCheckBox, DeclarativeWidget, QCheckBox, m_checkBox)
+CUSTOM_METAOBJECT(DeclarativeCheckBox, QCheckBox, m_proxiedObject)
// DeclarativeSlider
-DeclarativeSlider::DeclarativeSlider(QObject *parent)
- : DeclarativeWidget(parent)
- , m_slider(new QSlider)
-{
- m_slider->setOrientation(Qt::Horizontal);
- connectAllSignals(m_slider, this);
-}
-
-DeclarativeSlider::~DeclarativeSlider()
-{
- delete m_slider;
-}
-
-QObject* DeclarativeSlider::object()
+DeclarativeSlider::DeclarativeSlider(QObject *parent) : DeclarativeObjectProxy<QSlider>(parent)
{
- return m_slider;
+ connectAllSignals(m_proxiedObject, this);
}
-CUSTOM_METAOBJECT(DeclarativeSlider, DeclarativeWidget, QSlider, m_slider)
+CUSTOM_METAOBJECT(DeclarativeSlider, QSlider, m_proxiedObject)
virtual int qt_metacall(QMetaObject::Call, int, void **); \
private: \
-class DeclarativeObject : public QObject
+class AbstractDeclarativeObject : public QObject
{
Q_OBJECT
Q_CLASSINFO("DefaultProperty", "data")
public:
- DeclarativeObject(QObject *parent = 0);
- virtual ~DeclarativeObject();
+ AbstractDeclarativeObject(QObject *parent = 0);
+ virtual ~AbstractDeclarativeObject();
- virtual QObject* object() = 0;
+ virtual QObject* object() const = 0;
protected:
virtual void dataAppend(QObject *);
- virtual int dataCount();
- virtual QObject *dataAt(int);
+ virtual int dataCount() const;
+ virtual QObject *dataAt(int) const;
virtual void dataClear();
private:
static void data_clear(QDeclarativeListProperty<QObject> *);
};
-class DeclarativeHBoxLayout : public DeclarativeObject
+template <class T>
+class DeclarativeObjectProxy : public AbstractDeclarativeObject
{
- DECLARATIVE_OBJECT
-
public:
- DeclarativeHBoxLayout(QObject *parent = 0);
- ~DeclarativeHBoxLayout();
+ DeclarativeObjectProxy(QObject *parent = 0) : AbstractDeclarativeObject(parent), m_proxiedObject(new T) {}
- virtual QObject* object();
+ ~DeclarativeObjectProxy() { delete m_proxiedObject; }
- virtual void dataAppend(QObject *);
- virtual int dataCount();
- virtual QObject *dataAt(int);
- virtual void dataClear();
+ virtual QObject *object() const { return m_proxiedObject.data(); }
- private:
- QPointer<QHBoxLayout> m_layout;
+ protected:
+ virtual void dataAppend(QObject *object)
+ {
+ m_children.append(object);
+ }
+
+ virtual int dataCount() const { return m_children.count(); }
+ virtual QObject *dataAt(int index) const { return m_children.at(index); }
+ virtual void dataClear()
+ {
+ qDeleteAll(m_children);
+ m_children.clear();
+ }
+
+ protected:
+ QPointer<T> m_proxiedObject;
QVector<QObject*> m_children;
};
-class DeclarativeVBoxLayout : public DeclarativeObject
+template <class T>
+class DeclarativeBoxLayout : public DeclarativeObjectProxy<T>
+{
+ public:
+ DeclarativeBoxLayout(QObject *parent = 0) : DeclarativeObjectProxy<T>(parent) {}
+
+ protected:
+ virtual void dataAppend(QObject *object)
+ {
+ AbstractDeclarativeObject *declarativeObject = dynamic_cast<AbstractDeclarativeObject*>(object);
+ if (declarativeObject) {
+ QWidget *widget = qobject_cast<QWidget*>(declarativeObject->object());
+ if (widget) {
+ DeclarativeObjectProxy<T>::m_children.append(object);
+ DeclarativeObjectProxy<T>::m_proxiedObject->addWidget(widget);
+ return;
+ }
+
+ QLayout *layout = qobject_cast<QLayout*>(declarativeObject->object());
+ if (layout) {
+ DeclarativeObjectProxy<T>::m_children.append(object);
+ DeclarativeObjectProxy<T>::m_proxiedObject->addLayout(layout);
+ return;
+ }
+ }
+
+ DeclarativeObjectProxy<T>::dataAppend(object);
+ }
+};
+
+class DeclarativeHBoxLayout : public DeclarativeBoxLayout<QHBoxLayout>
{
DECLARATIVE_OBJECT
public:
- DeclarativeVBoxLayout(QObject *parent = 0);
- ~DeclarativeVBoxLayout();
-
- virtual QObject* object();
+ DeclarativeHBoxLayout(QObject *parent = 0);
+};
- virtual void dataAppend(QObject *);
- virtual int dataCount();
- virtual QObject *dataAt(int);
- virtual void dataClear();
+class DeclarativeVBoxLayout : public DeclarativeBoxLayout<QVBoxLayout>
+{
+ DECLARATIVE_OBJECT
- private:
- QPointer<QVBoxLayout> m_layout;
- QVector<QObject*> m_children;
+ public:
+ DeclarativeVBoxLayout(QObject *parent = 0);
};
-class DeclarativeWidget : public DeclarativeObject
+class DeclarativeWidget : public DeclarativeObjectProxy<QWidget>
{
DECLARATIVE_OBJECT
public:
DeclarativeWidget(QObject *parent = 0);
- ~DeclarativeWidget();
- virtual QObject* object();
-
- private:
+ protected:
virtual void dataAppend(QObject *);
- virtual int dataCount();
- virtual QObject *dataAt(int);
- virtual void dataClear();
-
- QPointer<QWidget> m_widget;
- QVector<QObject*> m_children;
};
-class DeclarativeLabel : public DeclarativeWidget
+class DeclarativeLabel : public DeclarativeObjectProxy<QLabel>
{
DECLARATIVE_OBJECT
public:
DeclarativeLabel(QObject *parent = 0);
- ~DeclarativeLabel();
-
- virtual QObject* object();
-
- private:
- QPointer<QLabel> m_label;
};
-class DeclarativeTabWidget : public DeclarativeWidget
+class DeclarativeTabWidget : public DeclarativeObjectProxy<QTabWidget>
{
DECLARATIVE_OBJECT
public:
DeclarativeTabWidget(QObject *parent = 0);
- ~DeclarativeTabWidget();
- virtual QObject* object();
-
- private:
+ protected:
virtual void dataAppend(QObject *);
- virtual int dataCount();
- virtual QObject *dataAt(int);
- virtual void dataClear();
-
- QPointer<QTabWidget> m_tabWidget;
- QVector<QObject*> m_children;
};
/*
class DeclarativeTab : public DeclarativeWidget
QObject* m_child;
};
*/
-class DeclarativePushButton : public DeclarativeWidget
+class DeclarativePushButton : public DeclarativeObjectProxy<QPushButton>
{
DECLARATIVE_OBJECT
public:
DeclarativePushButton(QObject *parent = 0);
- ~DeclarativePushButton();
-
- virtual QObject* object();
-
- private:
- QPointer<QPushButton> m_pushButton;
};
-class DeclarativeCheckBox : public DeclarativeWidget
+class DeclarativeCheckBox : public DeclarativeObjectProxy<QCheckBox>
{
DECLARATIVE_OBJECT
public:
DeclarativeCheckBox(QObject *parent = 0);
- ~DeclarativeCheckBox();
-
- virtual QObject* object();
-
- private:
- QPointer<QCheckBox> m_checkBox;
};
-class DeclarativeSlider : public DeclarativeWidget
+class DeclarativeSlider : public DeclarativeObjectProxy<QSlider>
{
DECLARATIVE_OBJECT
public:
DeclarativeSlider(QObject *parent = 0);
- ~DeclarativeSlider();
-
- virtual QObject* object();
-
- private:
- QPointer<QSlider> m_slider;
};
#endif