gpt4 book ai didi

QT 信号和插槽意外错误

转载 作者:行者123 更新时间:2023-12-04 13:09:39 26 4
gpt4 key购买 nike

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

但我得到了同样的错误。

到底是怎么回事?
请帮忙!

谢谢!

最佳答案

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

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

(作为旁注,您的连接语句似乎已损坏 s/signal/Signal/ )

关于QT 信号和插槽意外错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8527466/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com