一、代码本身问题
1)想显示登录界面,但是又构造的主界面对象(低级问题,因为改过名字)┭┮﹏┭┮
MyDialog w; //之前写的Mainwindow
w.show();//登录界面
return a.exec();
2)循环有问题
not positioned on a valid record
3)数据库语句使用
query.prepare("INSERT INTO admin (name,key) VALUES (:w,:111)");//用这句插入不进去
query.exec("INSERT INTO admin (name,key) VALUES (:w,:111)");//这样才行
4)在登录按钮函数里面
sql->connection();
sql->createDB();
//解决:放在Mydialog基类里面
5)多次右键关联了槽函数,又删除,报错
Warning: The name ‘layoutWidget’ (QWidget) is already in use, defaulting to ‘layoutWidget1’.
//解决:删除工程影子目录、重新构建、ui控件删除重建、通过connect关联、复制到新建文件
6)与stm32进行通信时,数据收发
我们在传的时候 , 用很多形式 比如用U8,字节,16进制 ,发现都不行 ,达不成我们想要的效果;
我们想要将温度、湿度、浓度分别显示三个不同文本框里;
解决:serial. readAll存在一个qstring变量里,再将内容data.toLatin1 ,之后用split分割 ;
打印收到的数据,可以看出温度、湿度是一起发的,因为温湿度是一个温湿度模块检测出的;而烟雾浓度是另一个模块检测出的;stm32一次只发一条数据,所以要删除前一条消息的换行符,这样三个数据就可以分开。
如:
8\r\n //浓度
78 26\r\n //湿度 温度
Receivetext= serial->readAll();
Receivetext=Receivetext.toLatin1();
Receivetext.remove("\r\n");//打印收到的数据,可以看出温度、湿度是一起发的,因为温湿度是一个温湿度模块检测出的;而烟雾浓度是另一个模块检测出的;stm32一次只发一条数据,所以要删除前一条消息的换行符。
//qDebug() << Receivetext;
QStringList list = Receivetext.split(" ");//分割
QString temp = list[0];
QString humidity = list[1];
QString density = list[2];
ui->temp->setText(temp);
ui->humidity->setText(humidity);
ui->density->setText(density);
7)测试数据库通信时,readAll会把所有数据读出,但是\n也读出来,解决用readline读一行,再删除\n
8)初步想法,日志和车辆信息表都存在服务器,后来发现客户端直接传sql插入命令,客户端也应该有数据库,服务器存日志,客户端存车辆信息表
9)refresh自动添加数据库信息不成功,原因是没有删除之前的表,所以表一直占用
二、编译类错误
1)qt生成二维码,error: png.h: No such file or directory
想再二维码之间插入一张图片,但是数据库没有png.h库,二维码生成不了;解决办法:这个想法毙掉了,重新换了下载了QRcode库
2)资源文件删除了,报错No rule to make target ‘resource.qrc’, needed by ‘debug/qrc_resource.cpp’.
解决:删除工程文件里相应文件的名字,如resource.cpp
3)客户端1和客户端2tcp通信,IP地址ping不通
因为他们都开了防火墙,此外IP地址会变更。解决:关闭防火墙