一个很好的简单例子会很好。就我而言,我有大约200个唯一的插槽,我想要附加到列表中,然后使用迭代的“for”循环设置各种连接。
答案 0 :(得分:4)
要检索QObject方法(信号,插槽等)的签名,您可以使用元对象(QMetaObject
)信息。例如,以下代码(取自Qt文档)提取所有方法'对象的签名:
const QMetaObject* metaObject = obj->metaObject();
QStringList methods;
for(int i = metaObject->methodOffset(); i < metaObject->methodCount(); ++i) {
if (metaOject->method(i).methodType() == QMetaMethod::Slot) {
methods << QString::fromLatin1(metaObject->method(i).signature());
}
}
要检查方法是插槽还是信号,可以使用QMetaMethod::methodType()
功能。签名使用QMetaMethod::signature()
(参见上面的例子)。
答案 1 :(得分:1)
此回复是在论坛上提供给我的。我在这里发帖以供参考:
QList<const char*> slotList;
slotList << SLOT(slot1());
slotList << SLOT(slot2());
// ...
for(int i=0; i< listOfButtons.size();++i) {
connect(listOfButtons->at(i), SIGNAL(clicked()), this, slotList.at(i));
}
http://www.qtcentre.org/threads/56224-A-list-for-storing-member-functions-slots
答案 2 :(得分:0)
connect()
中使用。