我最近需要添加一个信号到一个类,所以我改变了类从QObject继承,并将Q_OBJECT宏添加到类定义中。因为这样做,我得到“信号未定义的引用错误‘虚函数表的CLICommand’”下面的班线错误:Qt“信号未定义的参考错误”从QObject继承后
// File clicommand.h
#include <QString>
#include <QStringList>
#include <QTcpSocket>
#include "telnetthread.h"
class CLICommand : public QObject
{
Q_OBJECT
public:
CLICommand(TelnetThread *parentTelnetThread);
signals:
void signal_shutdown_request();
private:
TelnetThread *m_parentTelnetThread;
和第二误差“信号未定义的引用为‘虚函数表的CLICommand’错误”下面的线(intializing成员变量):
// File clicommand.cpp
#include <QDebug>
#include <QTcpSocket>
#include <QTextStream>
#include "version.h"
#include "clicommand.h"
#include "telnetthread.h"
#include "logger.h"
CLICommand::CLICommand(TelnetThread *parentTelnetThread)
: m_parentTelnetThread(parentTelnetThread)
{
}
,只是这里是我发射该信号。了,emit行生成错误未定义的参考`CLICommand :: signal_shutdown_request()”:
// file shutdown_clicommand.cpp
#include <QIODevice>
#include "clicommand.h"
#include "logger.h"
#include "version.h"
void CLICommand::execute_shutdown(const QStringList &commandLineFragments)
{
emit signal_shutdown_request();
}
我读了一堆关于这个主题的帖子,但似乎都不适用。我什至试图干净/ rebuildall。我不使用升压或其他库...只是QT 5
有人能告诉我我做错了什么吗?
解决方案:在QT Creator中,右键单击项目,选择RUN QMAKE,然后重新生成所有。关于运行重建ALL的其他帖子是不正确的......在它自己不会运行qmake。
往常,感谢+1 –
也许使用Qt Creator的时候明确地重新运行'qmake'最简单的方法就是直接去构建和删除'Makefile'。然后,在下一个“全部构建”动作中,Qt Creator重新生成它,这样“Q_OBJECT”变化相关的链接错误消失。 – maxschlepzig