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:通过自定义信号实现值变更监听(适合多位置监听值变化的场景)
如果业务需要用信号槽监听数值变化,可以自己定义值变更信号,绑定后主动触发:
- 在你的类的
signals段声明自定义信号:
class YourClass : public QWidget // 替换为你实际继承的父类 { Q_OBJECT // ... 原有成员声明 signals: void valeurPotChanged(int val); private: int m_valeurPot = 0; QLCDNumber *m_afficheValeurPotentiometre; // ... 其他成员声明 };
- 修改connect绑定逻辑,发送方改为你的类实例:
connect(this, SIGNAL(valeurPotChanged(int)), m_afficheValeurPotentiometre, SLOT(display(int)));
- 每次修改
m_valeurPot的位置主动触发信号:
void YourClass::readSerial() { // 原有读取串口、解析值的逻辑 m_valeurPot = 解析得到的数值; emit valeurPotChanged(m_valeurPot); }
内容的提问来源于stack exchange,提问作者pepelareinette
相关产品推荐
相关产品推荐

