错误:LNK2019: 无法解析的外部符号 的问题

Coderec 2012-11-07 05:06:51
class shot:public QLabel
{
Q_OBJECT
signals:
void del_shot(shot*);
};

class Widget : public QWidget
{
Q_OBJECT
public slots:
void del(shot*);
};

void Widget::keyPressEvent(QKeyEvent *event)
{
if(event->key()==Qt::Key_Control)
{
shot *a = new shot(int(u->getdir()),u->getX(),u->getY(),this);
connect(a,SIGNAL(del_shot(shot*)),this,SLOT(del(shot*)));

}
}


void shot::move()
{
switch(Dir)
{
case U:
if(Y-speed>0)
{
Y=Y-speed;
// switch简略写了,只写了向上走(U),其他情况都类似

}
else
emit del_shot(this);
break;
}
}


编译报错:

moc_widget.obj:-1: 错误:LNK2019: 无法解析的外部符号 "public: void __thiscall Widget::del(class shot *)" (?del@Widget@@QAEXPAVshot@@@Z),该符号在函数 "private: static void __cdecl Widget::qt_static_metacall(class QObject *,enum QMetaObject::Call,int,void * *)" (?qt_static_metacall@Widget@@CAXPAVQObject@@W4Call@QMetaObject@@HPAPAX@Z) 中被引用



debug\tobe_label.exe:-1: 错误:LNK1120: 1 个无法解析的外部命令


代码就是添上如上信号和槽才报错的,是什么问题呢?求教
...全文
1149 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kernlen 2013-08-30
  • 打赏
  • 举报
回复
引用 4 楼 yigeyingzi 的回复:
我觉的你可能已经解决了,但我还是说一句吧。信号是不要写实现的。但其他函数要有声明和实现吧,你只写了一个槽函数的声明,没有写他的实现就是这个错误
谢谢,你的建议是对的,就是因为没写槽函数的实现,3Q~
yigeyingzi 2013-02-05
  • 打赏
  • 举报
回复
我觉的你可能已经解决了,但我还是说一句吧。信号是不要写实现的。但其他函数要有声明和实现吧,你只写了一个槽函数的声明,没有写他的实现就是这个错误
JH19871985 2012-11-28
  • 打赏
  • 举报
回复
我也遇到了同样的问题,请解决了没有啊?
changcheng1988 2012-11-13
  • 打赏
  • 举报
回复
我也遇到一样的问题,求大神帮忙啊!
Coderec 2012-11-07
  • 打赏
  • 举报
回复
没人知道吗?

16,235

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧