1
我想將屬性標題添加到我的應用程序的主窗口中。但是,當我嘗試編譯,編譯器給了我這個錯誤:QT未定義的參考信號編譯錯誤
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&)
{
}
我試圖清理項目的bu ild文件夾,它沒有幫助:(。我正在使用QT 5.4並在QT Creator上工作。
'QOBJECT_H'?改爲嘗試'Q_OBJECT'。 – Mat 2015-02-07 18:58:57
之後不要忘記運行'qmake'。 (QtCreator應該自動執行此操作,但以防萬一...) – Zeta 2015-02-07 19:00:08
QMainWindow沒有任何titleChanged方法。 – 2015-02-07 19:01:32