我有一个简单的C++ Qt
程序,当我使用私有插槽时,我得到未定义的引用。任何人都可以帮助我吗?
我正在使用书籍C++ GUI Programming with Qt4中的Qt5
学习GUI设计。我在cmake
中使用MinGW
Windows
编译器。
但是,如果我从头文件中注释掉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&)
答案 0 :(得分:0)
您能否向我们展示实施(.cpp
)文件,您是否在void enableFindButton(const QString &text);
文件中声明了.cpp
作为
void mywidgets::enableFindButton(const QString &text)
{
}
开始。一旦摆脱了错误,就可以将代码放入插槽体内。
答案 1 :(得分:0)
未定义引用错误是因为我没有在(void mywidgets::enableFindButton(const QString &text)
{
}
)文件中定义.cpp
函数。这里给出了实现。
void mywidgets::enableFindButton(const QString &text){
findButton->setEnabled(!text.isEmpty());
}