Qt学习笔记
在学习QT5程序开发的过程中,我的参考书是陆文周编著的《QT5开发与实例(第3版)》。在学习第七章。图形视图框架时,遇到了conncet无法连接消息和槽的情况。
在找来教材对应的源码后对比类的定义,函数的声明后也没有发现不同。但是书上的源代码就能成功运行,实现消息响应,而没有警告信息。但我的程序运行后就出现
QObject::connect: No such slot QGraphicsView::Zoom(int) in ../mapWidget/mapwidget.cpp:39
这样的出错信息,表示不能找到信号槽函数slotZoom(int)。但是该函数的定义和声明都与原书代码一致。百思不得其解......随后我又仔细检查了类的继承关系,QT
项目的构建文件,包含头文件等,都没有发现异常。之后我又检查了是否在类声明中定义Q_OBJECT宏,结果真的没定义。添加该宏之后,在.pro文件中随便添加几个空格(为了使项目重新构建),运行,问题终于得到了解决。程序运行结果如下:
滑动滚动条,可实现地图的缩放,程序还是挺美观的^-^
总结
忽略小的细节,可能对程序造成很大的影响,尤其是类的继承,宏定义这种细节很容易被忽视。而这些细节往往会影响整个程序。