我有一个ObjectA类
类ObjectA : QObject { Q_OBJECT Q_PROPERTY(int _a读写setA NOTIFY ) public: ObjectA(int a):_a(a) {} int a() const {返回_a;}公共时隙: void ( int a) { _a = a;发射aChanged(_a);}信号: void (Int);
和ObjectB类
类ObjectB : QObject { Q_OBJECT Q_PROPERTY(int _b读b写setB NOTIFY ) public: ObjectB(int b):_b(b) {} int b() const {返回_b;}公共时隙: void ( int b) { _b = b;发射bChanged(_b);}信号: void (Int);
我想做这样的信号/插槽连接
QObject:连接(&objA,信号(aChanged(Int)),&objB,时隙(setB(Int);
只知道名字的属性。
ObjectA objA(10);ObjectB objB(5);
QObject * objectA = &objA;
const QMetaObject* metaObjectA = objectA->metaObject();
QMetaProperty metaPropertyA = metaObjectA->property(metaObjectA->indexOfProperty("_a"));
QObject * object = &objB;
const QMetaObject* metaObjectB = object->metaObject();
QMetaProperty metaPropertyB = metaObjectB->property(metaObjectB->indexOfProperty("_b"));
QObject::connect(&objA, metaPropertyA.notifySignal().methodSignature(), &objB, ... );
objA.setA(2);
std::cout << "objA.a() = " << objA.a() << " objB.b() = " << objB.b() << std::endl;但是
metaPropertyA.notifySignal().methodSignature()
不返回函数的指针,我也不知道如何获得set方法指针。
发布于 2014-08-28 15:11:49
metaPropertyA.notifySignal().signature()不返回方法指针,而是返回它的签名(文本表示)--在您的示例中,"aChanged(int)“是连接()所需要的。
如果您想直接调用它,可以使用metaPropertyA.notifySignal().invoke(...)。
编辑:您需要连接一些数字和方法名称作为信号和插槽宏做
所以你需要用程序创建
QObject::connect(&objA, "2aChanged(int)", &objB, "1setB(int)");但是如何获得"1setB(int)“是另一项任务。
EDIT2:我不知道这个数字是什么意思,因为它不是索引
https://stackoverflow.com/questions/25551042
复制相似问题