forked from hermixy/qt5-node-editor
-
Notifications
You must be signed in to change notification settings - Fork 0
/
qobjectnode.cpp
31 lines (28 loc) · 897 Bytes
/
qobjectnode.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "qobjectnode.hpp"
#include <QMetaProperty>
#include <QWidget>
qObjectnode::
qObjectnode(QObject *data, QGraphicsItem *parent, bool autodelete) : GraphicsNode(parent),m_autodelete(autodelete)
{
m_data=data;
if(m_data==0)
qWarning("NULL Data Object!");
else {
QWidget* tst = dynamic_cast<QWidget*>(data);
if(tst!=0)
setCentralWidget(tst);
const QMetaObject* m = m_data->metaObject();
int property_count = m->propertyCount()-1;
for(;property_count>=0;property_count--) {
QMetaProperty prop = m->property(property_count);
if(prop.isConstant() || !prop.isUser())
continue;
if(prop.isReadable() && prop.hasNotifySignal())
{
add_source(QString(prop.name()) + "[" +QString(prop.typeName()) +"]",m_data,property_count);
}
if(prop.isWritable())
add_sink(QString(prop.name()) + "[" +QString(prop.typeName()) +"]",m_data,property_count);
}
}
}