总结一下碰到过的所有问题error以及解决方案
如果这个文档未帮助到你,仍有bug未解决,可以在下方评论留言,有偿解决。
- qt的UI更新之后构建后发现没有变化
取消项目中的Shadow build的勾选,作用是取消影子构建,此后构建目录与源码处于同一目录,每次编译更新程序使用的UI文件 - error: ‘class QWidget’ has no member named ‘updatePlot’;
QWidget’ has no member named ‘setInit’;
一系列的找不到类成员
观察ui_mainwindow.h可以发现
版本太低了,目前这些member是QT6的内容 - 如何在线更新qt
点击安装目录里的MaintenanceTool.exe的工具
左下角设置 添加有效的URL,添加之后可以条件测试一下是否正确
URL在这里 https://download.qt.io/static/mirrorlist/
选择China的任意一个
系统是windows_x86的选择清华源的这个链接
https://mirrors.tuna.tsinghua.edu.cn/qt/online/qtsdkrepository/windows_x86/desktop/
e.g.将链接添加在资料档案库中
可以不填用户名+密码
可以选添加哪些组件
#更新哪些,添加哪些
https://mirrors.tuna.tsinghua.edu.cn/qt/online/qtsdkrepository/windows_x86/desktop/tools_qtcreator/
https://mirrors.tuna.tsinghua.edu.cn/qt/online/qtsdkrepository/windows_x86/desktop/tools_qtcreator_gui/
https://mirrors.tuna.tsinghua.edu.cn/qt/online/qtsdkrepository/windows_x86/desktop/tools_qtcreator_kits_and_debuggers/
https://mirrors.tuna.tsinghua.edu.cn/qt/online/qtsdkrepository/windows_x86/desktop/tools_mingw/
https://mirrors.tuna.tsinghua.edu.cn/qt/online/qtsdkrepository/windows_x86/desktop/qt6_673/
https://mirrors.tuna.tsinghua.edu.cn/qt/online/qtsdkrepository/windows_x86/desktop/qt6_673_msvc2022/
https://mirrors.tuna.tsinghua.edu.cn/qt/online/qtsdkrepository/windows_x86/desktop/qt6_673_src_doc_examples/
点下一步,选择更新组件,选择要更新的部分。
- 提示某个组建:No such file or directory
需要在ro工程中添加 QT += “对应的组件库名称”
e.g. QT += core
QT += network
QT +=serialport
如果加入了仍然报错,可能是因为没安装对应的组件
QT安装目录下找到
搜索到相应的组件库安装
5.QString 与QByteArray的转换与报错处理
跳转这个文章https://zhuanlan.zhihu.com/p/611600761
6.endl 报错
QT5中qDebug()<<“Error opening file”<<endl;是可行的
QT6中endl应该改为Qt::endl
7.QT6如何打开项目
打开.pro文件 点击configure project即可
8.QT5的项目如何在重新安装的新版QT6 编辑器中正常运行?
-
重新安装 QT 时如果改变安装目录,可能导致已有的 QT 项目无法编译(无法识别 QT 的类等),需要在安装完毕后建立新的 QT 项目,再将已有的 cpp、ui 等文件复制到新项目所在的目录下。
注意 新建QT项目不要选择默认的cmake 而是选择qmake 即生成.pro文件的项目 -
注意QT5升级到QT6一定要安装这个QT5兼容组件
QT安装目录下找到
添加组件:
.pro文件中加入QT +=core5compat
- .pro文件看不懂 可以学习下下面两个笔记
https://blog.csdn.net/jolle1/article/details/141122556
https://blog.csdn.net/a8039974/article/details/143052350
10.error:显示某个对象或类不包含某个member 函数或者是变量
“no member named xxx in xxxx”
原因:头文件未引入相应的这个所需要的头文件。
如果是在旧版本的QT上是可以运行的,则需要修改这个旧版的头文件写法,QT6已经废弃掉这种头文件。
比如QT5中的 #include
在QT6中应改成#include <QtNetwork/QTcpSocket>
11.QT运行闪退
原因1:程序里面用了# < QThread> 以及QThread的函数 注释掉即可
原因2:程序中不要用ClassName::function()调用函数,以及不要用ClassName::variation表示变量。
应该直接用this-> …。不然会重新新建一个这个类,导致嵌套过多崩溃
12.QT写入的文件打开之后发现中文是乱码
//不要用这个out.setEncoding(QStringConverter::Utf8 );不管用
out.setEncoding (QStringConverter::System); //输出编码设为System
- QtTcpSocket的综合运用——不区分客户端和服务器的用法
这个用法只关注连接、数据发送,不区分它们的身份,也不设置服务器监听。
使用QAbstractSocket Class 而非Tcp server 或者client。
查阅QAbstractSocket Class的文档来编写,点击跳转