问题一:
错误:......error: undefined reference to `vtable for xxxxx'
解决方法: 检查问题所在的类中方法是否加入了该类的类名,例如bool closesql()要加入类名sql得到bool sql::closesql(){
如果检查出错误后还是不行,请试着执行下Qmake 然后重新构建
问题二:
如何把一个类的操作好的数据显示到另个类的ui里?
解决方法:https://blog.csdn.net/leoeitail/article/details/60962817
问题三:
error: undefined reference to `MainWindow::xxxx(QString)'
问题四:
Qt修改UI文件无效
原因: Qt程序使用的UI文件并不是最新的UI文件
解决方法:两种
一、取消影子构建
打开左侧菜单栏“项目”→将“ Shadow build”打钩取消
二、添加代码
在.pro文件中添加代码: UI_DIR=./UI,指定UI文件所在目录为当前使用的程序目录,并每次编译更新UI文件**
问题五:
使用QByteArray::fromHex在Debug显示时丢失一个字节或者出现%、^这类乱码
原因:十六进制显示原因
解决方法:不影响后续操作
问题六:
出现:The inferior stopped because it received a signal from the Operating System
原因:
这个错误说明程序中有野指针,断点以下很容易找出错误
解决方法:在代码中使用断点找出错误的地方,将报错的指针改成为对象
问题七:
出现:error: invalid new-expression of abstract class type ‘UserdataActionI’
原因:抽象类出错,说明父类(接口)中有纯虚函数没有实现
解决方法:接口里的纯虚函数全部需要实现,这样才能new 子类
问题八:
使用qDebug() << sql_query.lastError()出现:QSqlError("", "Driver not loaded", "Driver not loaded")
原因:
原因一:出现这种情况请先检查qt安装目录下是否否sqlite3.dll的插件,然后逐个排查项目里有没有该插件
解决方法一:如果没有的话去官网下载https://www.sqlite.org/download.html,下载与自己qt版本相同的sqlite3插件,将得到的sqlite-dll-win64-x64-3270200.zip解压缩得到一个sqlite3.dll,将这个文件拖到上诉的文件夹中
原因二:使用SQSqlQuery sql_query = sql_query.prepare(update_sql)这种方法(update_sql为自己定义的插入语句,下同),查找SQSqlQuery可得知QSqlQuery(const QString& query = QString(), QSqlDatabase db = QSqlDatabase());,在使用这个方法的时候后面需要加入你相应的数据库类型,否则系统会自己生成一个空的数据库,造成没有数据库驱动的假象
解决方法二:创建QSqlQuery query(database);然后再 query.prepare(update_sql);
问题九:
出现:Error: Fail to create table. QSqlError("1", "Unable to execute statement", "near \"limit\": syntax error")
原因一:使用了sql的关键字limit
问题十:
问题:打包完成后,出现无法连接到数据库的现象(sqlite)
解决方法:
第一步:Qt重新以release模式运行,打开release运行后项目所在的目录,拷贝其release下的.exe文件到新的目录,目录名不能为中文。
第二步:打开Qt安装目录\Qt\Qt5.9.2\5.9.2\mingw53_32\bin,备用。
第三步:运行刚刚移动到新文件夹下.exe文件,会弹出各种.dll文件缺失的提醒,依次在刚刚打开的Qt安装目录找,直到找不到为止。
第三步:运行windeployqt 程序名.exe 即可。
问题十:
问题:如何使用数组传输数据
解决方法:使用QStringList list;
list.append(data);
QStringList getList(){return list;}即可
获取数据则使用list[i];这种方式
问题十一:
问题:ASSERT failure in QList
原因:使用QList容器的时候越界,在系统初始化阶段,创建了一个信号和槽,信号是由传感器发出的,而槽就是负责解析传感器发过来的字符串数据
槽函数中用了QStringList类型的变量,来接收通过QString类型经过split分割的子串数据。
于是,在机器唤醒的过程中,机器APP根本不清楚当前的状态,数据的解析出错了,解析出错进而就导致赋值出错,由于系统的自我保护机制,所以APP就挂掉了。
解决方法:检查一下自己使用的[]或者.at()里的参数的值是否越界了
问题十二:
问题:出现“undefined reference to 'vtable for 方法名 '的错误
原因:平台未识别除Q_OBJECT宏定义
解决方法一:删除出现这种错误的cpp文件和头文件,注意只是删除编译器的文件,不要勾选把这两个文件的本地文件删除了。删除完成后右击项目选择添加现有文件,将刚刚删除的文件加进来
解决方法二:执行qmake或者重新构建