在我拥有的一个类(它是QDialog的子类,父类是QWidget)的构造函数中,我试图在它的父类和它示例化的成员对象之间创建一个信号槽连接。
loadLib1::loadLib1(Qwidget* parent) : QDialog(parent)
{
// Declare members
...
m_animationFrame = new AnimationFrame(this);
if (0 !=m_animationFrame)
{
connect(parent, &wndWidget::loadToggled, m_animationFrame, &AnimationFrame::slotCreateWidget);
}
}
Visual Studio突出显示它并说:
*no instance of overloaded function "loadLib1::connect" matches the argument list
argument types are: (QWidget *, void (wndWidget::*)(), AnimationFrame *, void (AnimationFrame::*)())*
注意:wndWidget(来自QMainWindow)和AnimationFrame(来自QFrame)是类。
根据Qt文档和示例,在我看来这应该可以工作。你知道为什么不是吗?
1条答案
按热度按时间ajsxfq5m1#
这里
parent
是QWidget指针。QWidget没有信号loadToggled。解决方案,更改参数类型:或者,使用
qobject_cast
将parent
转换为wndWidget
指针。记住检查强制转换是否成功(使用临时变量)。但是最好只改变参数类型,这样如果类型不匹配,你会得到编译错误,而不需要在运行时处理这种情况。