目录
Bug1:2个重载没有“this”指针的合法转换
Bug2:已超过最大连接数,请关闭其他客户端重试
Bug3:在执行redo和undo的时候程序崩溃
Bug4:使用dynamic_cast时提示dynamic_cast的目标类型无效
Bug5:提示非标准语法;请使用 "&" 来创建指向成员的指针
Bug6:invalid null parameter
Bug7:尝试引用已删除的函数/不能实例化抽象类
Bug8:无法隐式捕获,因为尚未指定默认捕捉模式
Bug9:Debugger encountered an exception: Exception at 0x7fffff3ba7e8, code: 0xc0000005: read access violation at: 0xffffffffffffffff, flags=0x0
Bug10:Attempting to add QLayout "" to xxx "widget",which already has a layout
Bug11: obj LNK2001: 无法解析的外部符号
解决方法
这个问题是函数作用域问题。因为我定义的undoMap和redoMap在connect外部,而我在connect里调用了undoMap。只需要将定于移到connect里即可。
解决方法
这个提示看似是连接数超了,其实是因为调用到的函数头文件中的#ifndef 和 #define没有修改(就是函数写的时候为了偷懒直接复制了其他的头文件,但是没有修改#ifndef 和#define,导致了重复,让程序在找这个函数的时候没找到)。
解决方法
Debug时发现在push(cmd)这里出错了。发现是因为没有new undoStack()就直接调用了。
在Scene界面new一下即可。
解决方法
添加转换类型的头文件。
比如,图中的错误,添加头文件
#include "GroupItem.h"
#include "BaseNodeItem.h" 即可解决问题。
【注意】在调用其他类的时候,发现无法使用对应类的方法,可以看看是不是忘记加头文件了。
解决方法:
该提示表明在调用成员函数的函数没有添加()
这里只需要把第二个getScene改为getScene(),即可通过。
解决方法:
情况一:先new,再connect
指针为空,指针没指向对象,需要进行初始化才可以
1.指针new的对象在其connect之后
2.指针并未new出对象
情况二:将connect写到其他地方
这里遇到的就是情况二,我在初始化的时候使用connect,想让view获取scene传来的参数,但是因为初始化时还没有scene所以提示为空。在view里找一个函数,先对scene判空一下,再使用connect更为保险。
这个两种报错的实质是一样的。即传入是指针,接收变量没有 星号(*) 。
解决方法
这个问题产生的原因是因为转入的是指针,但是接收的构造函数不是指针,只要在构造对应的变量时添加 * 即可解决。
将BaseObjectItem _nextParent; 改成 BaseObjectItem *_nextParent;
解决方法:
将QGraphicsItem _nextParent; 改成 QGraphicsItem *_nextParent;
解决方法:
修改connect中的[]中的值。
默认捕获模式为[=](按值)和[&](按引用)。 [ ]表示没有捕获。
解决方法:
这里的问题是因为多次触发,导致卡住,程序崩到了这里。比如,多次触发鼠标事件(因为graphics的鼠标事件可以递归传递的),或者是在基类里调了子类导致循环引起的多次触发。
这里我遇到的是,析构问题。在delete线后,线的paint函数里的setPath()导致了这个问题。【就这一句,卡了我好久,谁能想到在这里...】
SRCFileTreeView是我在ui里提升过来的,一般提升过来的控件,如果里面不再加控件不需要添加布局。
解决方法:看一下提示的文件名称,进去看一下头文件的宏定义有没有写错,我就是宏定义再复制粘贴替换的时候写错了,重复写了个view导致的。修改成正确的就好了。
可以检查一下文件名有没有写对,之前遇到过在末尾加了空格,半天看不出来。