Я пытаюсь добавить название собственности в основное окно приложения. Но когда я пытаюсь скомпилировать, компилятор дает мне эту ошибку:QT undefined ошибка компиляции ссылки на сигнал
mainwindow.cpp:19: undefined reference to `MainWindow::titleChanged(QString const&)'
Я попробовал его на MinGW и msvc2013 и не будет работать на одной линии с этой ошибкой. В заголовок/исходные файлы:
mainwindow.h:
#ifndef MAINWINDOW
#define MAINWINDOW
#include <QObject>
#include <QString>
class MainWindow : public QObject {
QOBJECT_H
Q_PROPERTY(QString title READ getTitle WRITE setTitle NOTIFY titleChanged)
public:
MainWindow();
QString getTitle();
public slots:
void setTitle(const QString& title);
signals:
void titleChanged(const QString& title);
private:
QString title_;
};
#endif // MAINWINDOW
mainwindow.cpp:
#include "mainwindow.h"
#include <QString>
MainWindow::MainWindow()
{
}
QString MainWindow::getTitle()
{
return title_;
}
void MainWindow::setTitle(const QString& title)
{
if (title_ != title) {
title_ = title;
emit titleChanged(title);
}
}
Если добавить метод ниже к концу mainwindow.cpp файла, то приложение компилируется и запускается, но сигнал не испускается:
void MainWindow::titleChanged(const QString&)
{
}
Я попытался очистить бухту проекта ild, это не помогает :(. Я использую QT 5.4 и работаю над QT Creator.
'QOBJECT_H'? Вместо этого попробуйте 'Q_OBJECT'. – Mat
Не забудьте запустить 'qmake' впоследствии. (QtCreator должен делать это автоматически, но на всякий случай ...) – Zeta
QMainWindow не имеет метода titleChanged. –