【问题标题】:QT signals and slots unexpected ErrorQT 信号和槽意外错误
【发布时间】:2011-12-15 22:21:46
【问题描述】:

这让我发疯了....它之前工作过,但不是它不起作用。我已经定义了 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();

但我得到了同样的错误。

发生了什么事? 请帮忙!

谢谢!

【问题讨论】:

    标签: qt linker signals-slots


    【解决方案1】:

    问题是你试图定义一个名为Signal()的函数

    Qt 为您生成“信号”函数的主体,如果您尝试创建自己的定义,则会收到您所描述的错误。

    (附带说明,您的连接语句似乎已损坏s/signal/Signal/

    【讨论】:

    • 好的,如果 qt 为我生成函数,我该如何定义我想要在信号中完成的操作?
    • 信号就是这样,信号仅此而已。如果你想对该信号做出反应,那么你可以通过信号/插槽连接来连接它,并在你的插槽中执行你自己的代码。
    • 哦,我明白了,非常感谢..我对信号/插槽机制的理解有误
    • 非常感谢您的回答。花了太多时间试图修复这个错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 2012-10-15
    • 2015-07-18
    • 2013-09-27
    相关资源
    最近更新 更多