【发布时间】:2013-02-08 13:15:41
【问题描述】:
我在使用结构创建自定义插槽/信号时遇到问题。我有以下代码:
qRegisterMetaType<namespace::myClassA::aStruct>();
QObject::connect(&myClassA, SIGNAL(theSignal(myClassA::aStruct)),
&myClassB, SLOT(theSlot(myClassA::aStruct)));
运行程序时我得到了:
Object::connect: No such signal NameSpace::myClassA::theSignal(myClassA::aStruct)
Object::connect: (receiver name: 'NameSpace__CLASSNAME')
我该如何解决这个问题?
PS:槽和信号已在头文件文件 Q_SIGNALS 和 Q_SLOTS 关键字中正确声明,并带有正确的参数(aStruct)
【问题讨论】:
-
你在实现信号和槽后运行
qmake了吗? -
Q_DECLARE_METATYPE/qRegisterMetatype 不是必需的,也对直接连接没有帮助(两个对象位于同一线程中时的默认设置)
-
我突然想到,即使是看起来像小针孔的东西,也会妨碍正常运行:SIGNAL(PageClosed(QWidget *page)) 产生了错误。我删除了参数:page,它被接受了。
标签: qt signals-slots qobject