You need to enable JavaScript to run this app. Qt调用connect报no matching member function for call to connect错误求助
优惠活动
大模型
产品
解决方案
定价
更多

Qt调用connect报no matching member function for call to connect错误求助

问题根因

你当前的connect调用报错的核心原因是:Qt信号槽机制要求信号发送方必须是QObject类的子类实例,你代码里的m_valeurPot是普通int类型变量,不是QObject派生类,不具备发送valueChanged(int)信号的能力,自然找不到匹配的connect函数。

修复方案

方案1:直接在串口读取槽函数更新显示(最适配你的场景)

你已经有正常触发的readSerial()槽函数,在这个函数里读取到电位器值并赋值给m_valeurPot后,直接调用QLCDNumber的显示方法即可,不需要额外做信号槽绑定。
示例代码片段:

void YourClass::readSerial()
{
    // 原有读取串口、解析得到电位器值的逻辑
    m_valeurPot = 解析得到的int数值;
    // 新增直接更新LCD显示的代码
    m_afficheValeurPotentiometre->display(m_valeurPot);
}

方案2:通过自定义信号实现值变更监听(适合多位置监听值变化的场景)

如果业务需要用信号槽监听数值变化,可以自己定义值变更信号,绑定后主动触发:

  1. 在你的类的signals段声明自定义信号:
class YourClass : public QWidget // 替换为你实际继承的父类
{
    Q_OBJECT
    // ... 原有成员声明
signals:
    void valeurPotChanged(int val);
private:
    int m_valeurPot = 0;
    QLCDNumber *m_afficheValeurPotentiometre;
    // ... 其他成员声明
};
  1. 修改connect绑定逻辑,发送方改为你的类实例:
connect(this, SIGNAL(valeurPotChanged(int)), m_afficheValeurPotentiometre, SLOT(display(int)));
  1. 每次修改m_valeurPot的位置主动触发信号:
void YourClass::readSerial()
{
    // 原有读取串口、解析值的逻辑
    m_valeurPot = 解析得到的数值;
    emit valeurPotChanged(m_valeurPot);
}

内容的提问来源于stack exchange,提问作者pepelareinette

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 01:54:04