QT сигналы и слоты неожиданная ошибка - PullRequest
3 голосов
/ 16 декабря 2011

Это сводит меня с ума .... это работало раньше, но не это не работает.Я определил Q_SLOTS и Q_SIGNALS, и я пытался соединить их.Это работало до некоторой степени ... и вдруг все перестало работать, и теперь я получаю ошибки.Мой код следующий:

ControllerLogic.h

#ifndef CONTROLLERLOGIC_H
#define CONTROLLERLOGIC_H

#include "initdataaccess.h"
#include "mainframe.h"
#include <QtGui>
#include "initializationdatastructure.h"


/** This is a controller class; refering to the model-view-controller
 *  architecture.
 */

class ControllerLogic : public QObject
{
    Q_OBJECT
public:
    ControllerLogic(InitDataAccess *initDataAccess, MainFrame *mainFrame);

Q_SIGNALS:
    void Signal();

private:
    void setMainFrame(MainFrame mainFrame);

public Q_SLOTS:
    void receive();

};

#endif // CONTROLLERLOGIC_H

ControllerLogic.cpp

#include "controllerlogic.h"
#include "licensedataaccess.h"
#include <qobjectdefs.h>

// obsolete...may be used later

ControllerLogic::ControllerLogic(InitDataAccess *initDataAccess, MainFrame *mainFrame)
{
    connect(this, SIGNAL(signal()), mainFrame, SLOT(PrintTestSlot()));
}

void ControllerLogic::receive(){
    qDebug()<<"RECEIVE";
}

void ControllerLogic::Signal(){
    qDebug()<<"SIGNAL";
}

ОШИБКА

moc_controllerlogic.obj:-1: error: LNK2005: "protected: void __thiscall ControllerLogic::Signal(void)" (?Signal@ControllerLogic@@IAEXXZ) already defined in controllerlogic.obj

release\TSLSuite.exe:-1: error: LNK1169: one or more multiply defined symbols found

Я также попытался определить сигнал следующим образом:

public:
Q_SIGNAL void Signal();

, но я получаю ту же ошибку.

Что происходит?Пожалуйста, помогите!

Спасибо!

1 Ответ

7 голосов
/ 16 декабря 2011

Проблема в том, что вы пытаетесь определить функцию с именем Signal()

Qt генерирует тело функций «сигнала» для вас, и если вы попытаетесь создать собственное определение, вы будетеполучите ошибку, которую вы описываете.

(Как примечание: ваш оператор соединения кажется неработоспособным s/signal/Signal/)

...