【问题标题】:Not a signal or slot declaration不是信号或槽声明
【发布时间】:2021-10-05 12:26:39
【问题描述】:

这是我用来建立串行连接的代码。我面临的错误是“不是信号或插槽声明”。 请帮我解决这个问题

//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:
    QSerialPort *serial;     
    void serialReceived();
private:
    Ui::MainWindow *ui;

};
#endif // MAINWINDOW_H

【问题讨论】:

  • 代码的 CPP 部分在哪里? QSerialPort *serial; 是一个对象,把它放在私有部分而不是私有槽中。
  • 那部分代码太长没有被接受
  • @BhavishyaLakshmiKarnatakam 您应该编辑问题而不是在 cmets 中发布(根本不可读)
  • 你可以使用github
  • 请逐字说明完整的错误以及它的来源 -- moc 也许? QSerialPort *serial; 不是有效的插槽声明。

标签: qt serial-port qml c++17 signals-slots


【解决方案1】:

首先:在.pro 文件中添加:

QT       += core gui serialport

您收到此错误的原因:

mainwindow.h:25: 错误:不是信号或槽声明

是你把QSerialPort *serial;放在私有槽中。

如果您将代码更改为此,您的错误将得到修复。

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

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();

private:
    Ui::MainWindow *ui;
    QSerialPort    *serial;
};

#endif // MAINWINDOW_H

【讨论】:

  • 你能告诉我如何将虚拟串口连接到我的程序并检索数据
  • @Bhavishya Lakshmi Karnatakam ,既然这是另一个问题,请在另一个线程中提问。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多