qt private slot moc undefined reference错误

qt private slot moc undefined reference error

我有一个简单的 C++ Qt 程序,当我使用专用槽时,我得到了 undefined reference。谁能帮帮我?

我正在使用 C++ GUI Programming with Qt4 一书中的 Qt5 学习 GUI 设计。我在 Windows 中使用 cmakeMinGW 编译器。

但是,如果我从头文件中注释掉Q_OBJECT,那么它编译没有错误。

这是头文件。

#ifndef MYWIDGETS_H
#define MYWIDGETS_H

#include <QDialog>


class mywidgets : public QDialog
{
    Q_OBJECT
public:

    mywidgets();
    void myDemoWidgets();
    void mySecondDemoWidgets();
private:
    void findLayout();

private slots:
    //void findClicked();
    void enableFindButton(const QString &text);

signals:
    void findNext(const QString &str, Qt::CaseSensitivity cs);
    void findPrevious(const QString &str, Qt::CaseSensitivity cs);
};

#endif // MYWIDGETS_H

这是错误:

myClass_automoc.cpp:-1: error: undefined reference to mywidgets::enableFindButton(QString const&)

你能告诉我们实现 (.cpp) 文件吗,你在 .cpp 文件中声明 void enableFindButton(const QString &text);
void mywidgets::enableFindButton(const QString &text) { }
开始。消除错误后,您可以将代码放入插槽的主体中。

undefined reference错误是因为我没有在(.cpp)文件中定义void mywidgets::enableFindButton(const QString &text) { }函数。这里给出了实现。 void mywidgets::enableFindButton(const QString &text){ findButton->setEnabled(!text.isEmpty()); }