You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qt串口开发出现Not a signal or slot declaration错误求助

Qt串口开发“Not a signal or slot declaration”报错解决

错误的根本原因是你把普通成员变量声明写到了slots(槽函数)区段中,Qt的元对象编译器(moc)在解析slots标记的区段时,只会识别函数声明作为槽,遇到变量声明就会触发该报错。
你代码中的错误段如下:

private slots:
    QSerialPort *serial;     // 此处为成员变量,不能放在slots区段
    void serialReceived();

修正方案

把QSerialPort *serial移动到private成员变量区段即可,修正后的完整头文件代码如下:

//header file
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QtSerialPort/QSerialPort>
#include <QMainWindow>
#include <QDebug>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
private slots:
    void serialReceived(); // slots区段仅保留槽函数声明
private:
    Ui::MainWindow *ui;
    QSerialPort *serial;   // 成员变量移动到私有成员区段
};
#endif // MAINWINDOW_H

额外注意事项

  • 修正后建议先清理项目构建缓存,再重新执行qmake、构建操作,避免旧的moc生成文件导致残留报错
  • 后续开发时注意signals、slots标记的区段内只能编写函数声明,不能放置普通成员变量

内容的提问来源于stack exchange,提问作者Bhavishya Lakshmi Karnatakam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:54:06