응용 프로그램의 기본 창에 속성 제목을 추가하려고합니다. 나는 그것을 컴파일 할 때, 컴파일러는 나에게 오류를 제공합니다신호에서 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를 사용 중입니다.
:
또한 읽기 가치가 신호/슬롯이있는 일반적인 문제에 대한 좋은 독서로 지적되었다? 대신에'Q_OBJECT'를 시도하십시오. – Mat
나중에'qmake'를 실행하는 것을 잊지 마십시오. (QtCreator는이 작업을 자동으로 수행해야하지만 경우에 따라 ...) – Zeta
QMainWindow에는 titleChanged 메서드가 없습니다. –