连接功能失败,因为信号找不到对象 [关闭]

connect function fails because the signal cannot find the object [closed]

提问人:Juan Antonio Miralles 提问时间:11/14/2023 最后编辑:Juan Antonio Miralles 更新时间:11/15/2023 访问量:59

问:


编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将帮助其他人回答这个问题。

8天前关闭。

这篇文章是在 7 天前编辑并提交审核的。

调用时,我收到错误“无法调用没有对象*的成员功能”。QObject::connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection)

我正在尝试将自定义按钮发出的信号连接到按钮的容器类中定义的插槽。 在容器中,我定义:


    signals:
        void hovered();

在容器标头中,我定义了一个类对象:customButton

customButton* casilla = new customButton;

插槽如下:

    public slots:
        void mostrarCasilla();

现在,在容器构造函数中,我尝试用这条线连接信号和插槽

QObject::connect(casilla,&customButton::hovered(),this,&board::mostrarCasilla());

我认为这是某种简单的错误,如果我让它工作,我会把完整的代码放在社区的例子中

C++ Qt 信号-插槽 QT 信号

评论

2赞 G.M. 11/14/2023
&customButton::hovered() --> &customButton::hovered?同样,从插槽定义中删除 。()
0赞 Juan Antonio Miralles 11/15/2023
谢谢,现在我更了解这个函数是如何工作的

答:

2赞 0xlitf 11/14/2023 #1

&A::func是一个成员函数指针,其作用是获取 func 的地址。&

对于,是一个函数调用,也许你可以得到一个值之后,但是这个值是R值,需要一个L值,所以在任何情况下都是错误的。func()()func()&&A::func()

评论

0赞 Juan Antonio Miralles 11/15/2023
非常感谢,现在我更了解这个功能是如何工作的
0赞 Swift - Friday Pie 11/15/2023
吹毛求疵 - 在任何情况下都是错误的,其中 是类 A 的非静态成员函数。 否则,表达式可能会有其他含义(例如,将地址作为调用结果等)&A::func()funcoperator()