2017.02.15-2017.05.15DEBUG日记(QT+C++BUG)

2017/02/17
Error
错误:cannot find -lqsqlpsql4
错误:collect2: ld returned 1 exit status
1. 查找环境变量path,和系统的配置是相符的,排除
2. 更改编译器,都不能通过编译,排除
3. 查找文件下plugins目录下qsqlpsqld4.dll存在,排除
4. 在项目下文件.pro中添加数据库路径,成功
2017/02/22
Error
信号:sigsegv
错误信息:Segmentfault
调用标准类库vector,Qvector,qlist来定义一个类的私有成员变量,使用相关函数(size(),clear()等)都会导致程序异常,但是在函数内部定义的局部变量使用相关类型不会导致该错误。
解决方案:在成员函数内部定义相关的数据结构

Error
雷达数据显示在海图上会因为海图的缩放导致位置的偏移。
解决方法:图片的绘制调用的是painter 的drawPixmap函数,对于painter来讲,原点位于左上角,向右是x正向,向下是y正向,
这里写图片描述
对于图片 来讲,需要尖尖冲着标准位置,所以用的是从(a-n/2,b-m)的方式保持底部中心为标准坐标位置。
绘图位置是根据左上顶点来确定的,所以虽然是保持了和标准位置的像素量不变,但是像素在地图上由于scale的大小不同会有影响。
解决方案:根据图片尺寸定位绘图位置,随意设置会导致位置的大幅度偏移。

2017/02/27
Error
Stary ‘\234’ in program
改行出现了不被包含的字符,比如空格格式不对,或是出现了中文
解决方案:将改行重写一遍即可
Error
程序运行信号:sigsegv
错误信息:Segmentfault
错位位置显示为新建的对象第一次调用函数时
错误原因:没有new和初始化
解决方案:new 并初始化

Error
Layout嵌套布局无论如何也只能显示最先定义的layout
错误原因:未知
解决方案:将主布局定义在最前边

2017/02/28
Error
创建信号槽时系统提示No Such signal balabala
解决方案:自定义信号signal和槽函数slot严格要对应,比如
Signals:
Void on_sending(QString);
Slot:
Void on_getting(QString);
Connect(this,SIGNAL(on_sending(QString)),this,SLOT(on_getting(QString)));
这样就是正确的,可以连接成功
但是这样写
Signals:
Void on_sending(QString str);
Slot:
Void on_getting(QString str);
之前写的connect函数就没用了,运行时会提示slot和signal都是不存在的

2017/03/03
Error
No matchin function for call to (类名)::connect
错误原因:Connect函数是object的静态成员函数,两个指针参数的类要继承自object才能使用。
解决方案: :public Qobject

2017/01/04
Error
Does not name a type
错误可能:1、类定义完成没加分号
2、头文件互相包含
解决方案:把某一个头文件的包含放在宏定义之前。

2017/03/13
Error:
No such slot
但是明明定义了某个slot。
解决方案:在类里添加Q_OBJECT
就像这样
class O3MControlSystem_UDPSocketCtrl:public QObject
{
Q_OBJECT
public:
然后又出现了undefined reference to ‘vtable for’的error
这是因为没有用ide自动的绑定与qobject之间的关系,所以要添加他们之间的关系
解决方案:从qtcreator中去除该头文件,然后再添加回来,就添加了引用关系。

2017/03/16
Error
‘Base’ id not an accessible base of ‘Child’
基类是子类的一个不可访问基础
原因:采用了保护继承的方式,保护继承的基类时,基类的各成员属性变为protected,private成员被隐藏,派生类的成员只能访问积累中的public和protected成员,而不能访问private成员,派生类的对象不能访问基类中的任何成员。
派生类的对象不能访问基类中的任何成员,所以要想使用必须重写该函数。
或者绕过该函数

2017/03/28
Error
Collect2:Id returned 1 exit status
解决方案:
(1) 杀死程序,关闭qtcreator
(2) 编译错误,可能是和程序相关的头文件没有包含,包含了就好了
(3) 编译错误,可能是定义了槽函数但是没有实现,实现了就好了

猜你喜欢

转载自blog.csdn.net/u013992365/article/details/72799701