Qt开发踩坑问题记录

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"
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值