c – 继承自QObject后,Qt“发出未定义的参考错误信号”
发布时间:2020-12-16 04:52:31 所属栏目:百科 来源:网络整理
导读:我最近需要向类添加一个信号,所以我将类更改为继承自QObject并将Q_OBJECT宏添加到类定义中.由于这样做,我在下面的类别行中得到“’vtable for CLICommand’”信号未定义的引用错误: // File clicommand.h#include QString#include QStringList#include QTcp
我最近需要向类添加一个信号,所以我将类更改为继承自QObject并将Q_OBJECT宏添加到类定义中.由于这样做,我在下面的类别行中得到“’vtable for CLICommand’”信号未定义的引用错误:
// 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; 第二个错误“在’vtable for CLICommand”上发出未定义的引用错误信号”在下面一行(初始化成员变量): // 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(); } 我已经阅读了很多关于这个主题的帖子,但似乎都没有适用.我甚至尝试过清洁/重建.我没有使用boost或其他库…只是QT 5 有人能告诉我我做错了什么吗? 解决方案:在QT Creator中,右键单击项目,选择RUN QMAKE,然后重建所有项目.关于运行REBUILD ALL的其他帖子是不正确的……它本身就不会运行qmake. 解决方法
您需要确保(重新)运行“moc”以进行这些更改.您似乎错过了生成的moc文件,或者它已过时,因此不包含对当前状态的正确引用.
添加Q_OBJECT宏时,QtCreator不会正确重新运行qmake.这是一个长期存在的问题,因此您需要手动重新运行它. https://bugreports.qt.io/browse/QTCREATORBUG-231 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |