首页 > 解决方案 > 连接信号和插槽的新方法

问题描述

我在使用以下代码行时遇到问题:

connect(m_uaProxy, CUaProxy::uaItemChanged,this, CUaHandler::onUaMsgReceived);

我正在使用 Qt 5.11.1。在 Windows 上,这可以编译并工作,但会产生以下“问题”:

错误:在没有对象参数的情况下调用非静态成员函数

在 linux 上运行相同的代码是不可能的,因为这一行正在终止编译。我想我正在使用新的信号/插槽连接方法正确运行代码。这里可能是什么情况?

方法定义为: 连接创建类中的信号:

void uaItemChanged(const MsgType msgt,
                   const QVariant& index,
                   const QVariant& value);

类中的插槽CUaProxy

void onUaMsgReceived(const CUaProxy::MsgType msgt,
                     const QVariant& index,
                     const QVariant& value);

标签: c++qt

解决方案


我的语法错误,这是正确的(需要函数的地址):

connect(m_uaProxy, &CUaProxy::uaItemChanged, this, &CUaHandler::onUaMsgReceived);

不知道为什么它可以在 Windows 平台上运行。


推荐阅读