Qt初学者,一路磕绊,将两天来心得发一下聊以遣怀。

原创 2015年07月08日 08:51:05

初来乍到水平有限,想到啥说啥,不要见笑。

1 凡是使用信号槽的类,都必须是由QObject派生,否则编译直接报错。

2 MainWindow.obj : error LNK2019: 无法解析的外部符号 "private: void __thiscall CMainWindow::slotReadDataOut(void)" (?slotReadDataOut@CMainWindow@@AAEXXZ),该符号在函数 "public: virtual int __thiscall CMainWindow::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@CMainWindow@@UAEHW4Call@QMetaObject@@HPAPAX@Z) 中被引用

1>D:\on3000\src\vc\bus0703\bus_in\Debug\bus_in.exe : fatal error LNK1120: 1 个无法解析的外部命令

问题原因:头文件中声明了槽函数的存在,但是忘记在源文件重定义槽函数。

解决办法:定义响应槽函数即可。

3 报错:该文件已在源编辑器之外被修改,是否重新加载

  解决办法:菜单:“工具——选项——环境——文档”在“自动加载更改(如果已保存)”前勾选即可。

4 报错:1>d:\on3000\src\vc\bus0703\bus_out\MgrConfigOutDown.h(0): Warning: No relevant classes found. No output generated

问题原因:此类用到信号槽机制,在头文件中没有声明。

解决办法:在头文件中加  Q_OBJECT 即可。

5 信号槽链接声明位置

 个人总结就是在一个信号发出对象和槽响应对象都有效的地方,而且这个地方程序一运行就会调用到即可。

 一般选择在new一个新对象后把他相关的信号槽连接完善。

6 编写程序头文件时候在最后#endif后再换行一次,作用没体会到,但是这么用就好了(我师父说的)。

7 错误说明:

1>d:\on3000\src\vc\bus0703\bus_out\mgrsocketoutdown.h(34) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\on3000\src\vc\bus0703\bus_out\mgrsocketoutdown.h(34) : warning C4183: “signalDataFromOutDown”: 缺少返回类型;假定为返回“int”的成员函数

问题原因:信号函数声明没有加void类型。

问题解决:从原来的signalDataFromOutDown();前边加一个void改为:void signalDataFromOutDown();

8 错误说明:

1>d:\on3000\src\vc\bus0703\bus_out\mgrsocketoutdown.cpp(151) : error C2275: “CNodeSocket”: 将此类型用作表达式非法
1>        d:\on3000\src\vc\bus0703\bus_out\nodesocket.h(7) : 参见“CNodeSocket”的声明

错误代码:

emit signalDisconnectOutDown(CNodeSocket* pSocket);

问题原因:发信号已经是在调用信号函数了,直接写参数就行了,上边代码形式类似于在声明参数。

问题解决:去掉声明部分:emit signalDisconnectOutDown(pSocket);

 

9 调试报错:error C2664: “bool QObject::connect(const QObject *,const char *,const QObject *,const char *,Qt::ConnectionType)”: 不能将参数 3 从“CMgrNodeServer”转换为“const QObject *”

错误代码:connect(this, SIGNAL(signalDataToMgrInUp(QByteArray &, int )), m_mgrNodeServerUp, SLOT(slotDataFromMainWindow(QByteArray & , int )));

错误原因:connect的第三个参数m_mgrNodeServerUp是个对象,而不是对象指针,参数类型不对,(楼主找了一小时啊。。。。)。

问题解决:修改后代码:connect(this, SIGNAL(signalDataToMgrInUp(QByteArray &, int )), &m_mgrNodeServerUp, SLOT(slotDataFromMainWindow(QByteArray & , int )));
其实就是多加个&。

归纳总结:参数3说明的是第三个参数有问题,也就是槽函数所在对象有问题,从CMgrNodeServer转换为const QObject*说明了自己用的是个对象,而实际需要的是对象指针!!!

10 这个地方错过两次,每次都找了好久,问题不大但很隐蔽。

所报错误:1>d:\on3000\src\vc\bus自己写的\bu_in_1.0\nodeserver.cpp(18) : error C2248: “CNodeSocket::CNodeSocket”: 无法访问 private 成员(在“CNodeSocket”类中声明)
1>        d:\on3000\src\vc\bus自己写的\bu_in_1.0\nodesocket.h(12) : 参见“CNodeSocket::CNodeSocket”的声明
1>        d:\on3000\src\vc\bus自己写的\bu_in_1.0\nodesocket.h(7) : 参见“CNodeSocket”的声明

问题原因:构造函数没有声明为public

总结归纳:构造函数如果不声明为公有会被默认为私有,这样就悲剧了。所以我们每次写构造函数和析构函数度的时候不能偷懒,public一定要加上!!!!!!!!!!!

 

11 C++编程隐蔽错误:error C2533: 构造函数不能有返回类型

 .h文件中类结尾没有分号(;)引起。

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

作为一个初学者,总结一下一个月来学习IOS的成果,使用swift语言

作为一只萌新,学习iOS 已经一个月了,感觉只是一个劲得往前冲,还不如写篇博客整理一下比较好(好吧,也是我的第一次写博客): 我学的是swift语言,因为它是一门很新的语言,所以遇到的很多问题网上都...

学习java一个半月以来的心得--给初学者的一些建议

我今年大四,由于毕业设计早早的做完,也并不打算匆匆的入职,便趁此大好时光,一边接受企业培训,一边摸索java的学习。 在我看来,学习一门语言必备的几个要点在于,看,练,悟。 在这个连技术也已经沦为...
  • open4u
  • open4u
  • 2011年11月08日 18:40
  • 510

Oracle初学者的入门心得

  • 2008年06月19日 10:07
  • 5KB
  • 下载

mini2440初学者的开发心得和疑问

最近在玩mini2440,基于开发商配置好的linux系统来熟悉。由于驱动和应用程序的编写都需要调试,而我是采用nfs的方式来使开发板和pc端共享文件的,有时候重启开发板,就必须在超级终端手动配置ip...

软件初学者的9大心得

时光总是很匆匆的恍然流逝,今天无意间在ITEYE论坛上看到了一片博客,内容大致就是写给那些软件入门的童鞋,给我印象很深刻。细数学习软件工程这一门学问,差不多快四年了吧,大学学习三年,加上现在大半年的见...
  • ysblue
  • ysblue
  • 2014年01月04日 20:01
  • 992

【Java学习笔记】一个初学者的学习历程,分享学习JAVA心得

毕业在即,毕业设计早早了结,单位也早已确定,但是并不打算匆匆的入职,便趁此大好时光,一边接受企业培训,一边摸索java的学习。在我看来,学习一门语言必备的几个要点在于,看,练,悟。在这个连技术也已经沦...

Qt中SQL QSqlQuery 对象中prepare()函数的用法(初学者,学习笔记,还望指正)

本文主要说明了qt中数据库操作的prepare()函数用法。

zc301摄像头 qt 简单拍照(我是初学者,只是提供个思路,不喜勿喷)

/////////////////////////////////////////////////////////////////////////////// 1. map.h #ifndef MAP...

zc301摄像头 qt 简单摄像(我是初学者,只是提供个思路,不喜勿喷)

////////////////////////////////////////////////////////////////////////////////////////////////////...

纪念一下我这吃两天两次重装长一智的思想

纪念一下我这吃两天两次重装长一智的思想 第一天:      首先我听说了买个wlan接收器在我们这里可以上网了,而且网速还不赖,我亲身去看看一下人家的设备,呀!还真不赖!!然后我一大早起来就去...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Qt初学者,一路磕绊,将两天来心得发一下聊以遣怀。
举报原因:
原因补充:

(最多只允许输入30个字)