【发布时间】:2015-05-21 13:51:36
【问题描述】:
我的 QServiceManager 有问题。
QServiceManager manager;
CFoo bar;
QList<QServiceInterfaceDescriptor> ServiceList = manager.findInterfaces(SERVICE_NAME);
for(int i = 0; i < ServiceList.length(); i++)
{
bool accessGranted = false;
QServiceInterfaceDescriptor descriptor = ServiceList[i];
if (descriptor.interfaceName() == INTERFACE)
{
bar = manager.loadLocalTypedInterface<IFoo>(descriptor, accessGranted);
if (NULL == bar && false == accessGranted)
{
connect(bar, SIGNAL(signal()),
this, SLOT(slot()));
}
}
}
我可以在bar上的接口IFoo中指定函数调用,比如:
bar.function()
我看到远程对象 foo 正在接收函数调用,但是当我远程发送信号时:
class IFoo : public QObject
{
Q_OBJECT
public:
virtual void function() = 0:
signals:
void signal();
};
class CFoo : public IFoo`
{
Q_OBJECT
void function()
{
emit signal();
}
};
没有收到。函数 slot() 永远不会被调用。我检查了连接函数是否被调用并返回 TRUE。谁能指出我做错了什么?
【问题讨论】:
-
CFoo 不是
QObject。