gpt4 book ai didi

c++ - 信号上未解析的外部符号

转载 作者:行者123 更新时间:2023-11-30 01:49:55 26 4
gpt4 key购买 nike

我试图通过从 QLCDNumber 继承一个新类来使它可点击。它所做的只是定义一个发送 clicked() 信号的 mouseReleaseEvent(QMouseEvent *e)。我认为我的代码是正确的,但它找不到信号(在 mouseReleaseEvent() 内的 clicked() 上未解析的外部符号

//myLCDNumber.h
#ifndef MYLCDNUMBER_H
#define MYLCDNUMBER_H

#include <QLCDNumber>
#include <QMouseEvent>

class myLCDNumber : public QLCDNumber
{
public:
myLCDNumber(uint numDigits);
~myLCDNumber();
void mouseReleaseEvent(QMouseEvent *e);

signals:
void clicked(void);
};

#endif // MYLCDNUMBER_H

//myLCDNumber.cpp
#include "mylcdnumber.h"

myLCDNumber::myLCDNumber(uint numDigits):QLCDNumber(numDigits){}

myLCDNumber::~myLCDNumber(){}

void myLCDNumber::mouseReleaseEvent(QMouseEvent *e)
{
qDebug("Click check");
if (e->button() == Qt::LeftButton)
emit myLCDNumber::clicked();
}

编辑:我检查了 SOURCES 列表中的所有文件以在我的项目文件中正确引用,然后我重新运行 qmake。没有变化。

最佳答案

您的问题是您使用了信号和/或槽,而没有使用 Qt 的元对象编译器。将 Q_OBJECT 宏添加到您的类定义中,它将起作用:

//myLCDNumber.h
#ifndef MYLCDNUMBER_H
#define MYLCDNUMBER_H

#include <QLCDNumber>
#include <QMouseEvent>

class myLCDNumber : public QLCDNumber
{
Q_OBJECT

public:
myLCDNumber(uint numDigits);
~myLCDNumber();
void mouseReleaseEvent(QMouseEvent *e);

signals:
void clicked(void);
};

#endif // MYLCDNUMBER_H

不要忘记将头文件添加到 HEADERS 变量并在再次构建之前重新运行 qmake。

关于c++ - 信号上未解析的外部符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28251618/

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