Qt开发踩坑问题记录
问题:Qml编译的exe,用Windeployqt打包后无法运行。
解决:正确的打包命令 windeployqt xxx.exe --qmldir qml源码文件的路径
参考: https://blog.csdn.net/weixin_49587492/article/details/124663491
无效解决方案:【将Qt Quick相关的几个文件夹手工拷贝进来即可。】
该方法在未安装Qt开发环境的电脑上运行时无效!
参考链接:https://blog.csdn.net/qq_26611129/article/details/121487720
问题:数值型QJsonValue没有toString()方法
原因:当json对象中存在int,double型时,QJsonValue的toString()方法无效,返回的是空字符串。
可参考如下方法:
QString strRet;
QJsonObject jsonObj;
QJsonDocument doc(jsonObj);
strRet = QString(doc.toJson(QJsonDocument::Indented));
参考链接:
https://blog.csdn.net/downanddusk/article/details/122257025
https://blog.csdn.net/qqzhaojianbiao/article/details/117332698
问题:TCP 推送单条消息过程,解析延迟问题
问题原因:
打印日志发现;单个消息需通过多次的接收才完成,每次的接收会触发QTCPSocket的readReady消息通知,每条消息通知直接存在时间间隔;导致一条完整消息的解析需要耗时300ms左右;后台发送的频率为200ms,导致延时;
解决:
1、使用第三方TCP通信库?(如:libhv)
2、不使用QTCPSocket的readReady消息通知机制;线程while循环处理接收消息?
问题:qml中引入子目录下的组件报错
qrc:ui/main.qml:6 import “./common” has no qmldir and no namespace
原因:“qrc:/ui/main.qml"错误的写成了"qrc:ui/main.qml”【少一个斜杠】
注意事项:导入模块时,不要混用不同的导入方式,参考 https://www.codenong.com/35698711/
问题:NSIS打包生成的快捷方式无法启动应用程序
SetOutPath:设置输出路径,在生成快捷方式前重设输出路径"$INSTDIR",保证快捷链接路径正确
SetOutPath "$INSTDIR\languages" /// <SetOutPath:设置输出路径>
File /r "..\..\src\languages\*.qm"
CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
SetOutPath "$INSTDIR"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_NAME}.exe"
SetOutPath "$INSTDIR"
CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_NAME}.exe"