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
相关产品推荐
相关产品推荐

