У меня простой C++ Qt
программа и я получаю неопределенные ссылки когда я использую частные слоты. Может кто-нибудь мне помочь?
Я изучаю дизайн GUI, используя Qt5
из книги Программирование на C ++ с использованием Qt4. я использую 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&)
Можете ли вы показать нам реализацию (.cpp
) файл, вы заявили void enableFindButton(const QString &text);
в .cpp
подать как
void mywidgets::enableFindButton(const QString &text)
{
}
для начала. Как только вы избавитесь от ошибки, вы можете поместить код в тело слота.
неопределенные ссылки ошибка была, потому что я не определил void mywidgets::enableFindButton(const QString &text)
функция в (
{
}.cpp
) файл. Реализация приведена здесь.
void mywidgets::enableFindButton(const QString &text){
findButton->setEnabled(!text.isEmpty());
}