我想使用在编译时进行类型检查的新语法来围绕QObject的连接构建包装器。
主要思想是:“嘿听众,将此对象的插槽连接到我的newData信号上”
void Listener::_addClient(const QObject *object, const QMetaMethod& slot)
{
connect(this, &Listener::newData, object, slot);
}
一些
Client
类可以简单地做到:Listener myListener;
myListener._addClient(this, &Client::mySlot);
这当然不会编译。
Listener
对象将归管理类所有,因此我无法直接访问它们,因此无法进行传统连接。 如何为该连接构建包装器,以便确保在编译时进行类型检查?
最佳答案
您可以使用模板:
template <typename Receiver, typename Slot>
void Listener::_addClient(const Receiver *object, const Slot& slot)
{
connect(this, &Listener::newData, object, slot);
}
关于c++ - 将QMetaMethod作为参数传递给使用新QObject::connect语法的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55955390/