【debug】QT 相关问题error汇总 QT运行闪退 QT5升级到QT6注意要点
持续更新,建议关注、收藏、点赞!
总结一下碰到过的所有问题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
9…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
13.QtTcpSocket的综合运用——不区分客户端和服务器的用法
这个用法只关注连接、数据发送,不区分它们的身份,也不设置服务器监听。
使用QAbstractSocket Class 而非Tcp server 或者client。
查阅QAbstractSocket Class的文档来编写,点击跳转
14.如何查看报错信息
QT6构建时选择debug模式 而非release,这样一些内部报错都会打印看到;release时是看不到的。
15.qt项目生成.exe可执行文件
设置项目构建配置
打开你的 Qt 项目,在 Qt Creator 左侧的项目导航栏中,点击项目名称以打开项目设置页面。
在 “Build & Run” 选项卡中,确保选择了正确的构建套件(Kit)。这个套件应该与你的目标平台相匹配,例如 Windows、Linux 或 macOS。
生成 Release 版本
在 Qt Creator 的左下角,选择 “构建配置” 下拉菜单,选择 “Release”。
点击 “构建” 按钮(或者使用快捷键 Ctrl+B)来构建项目的 Release 版本。这将生成优化过的可执行文件,不包含调试信息。
找到可执行文件
构建成功后,可执行文件通常位于项目的构建目录中。在 Qt Creator 中,你可以在 “Projects” 选项卡的 “Build directory” 字段中找到构建目录的路径。
对于 Windows 平台,可执行文件的扩展名为 “.exe”。在构建目录中找到这个文件。
部署依赖项(可选)
如果你的项目依赖于特定的 Qt 库或其他动态链接库,你可能需要将这些依赖项与可执行文件一起部署,以便在其他计算机上运行。
从自定义的路径中取出.exe文件放在一个单独的空文件夹中
.exe文件在该文件夹中的release文件夹中
从开始程序中搜索Qt,打开Qt命令行
切换到存放单独.exe文件的路径中,输入以下指令
cd /d D:\project\data\demo //切换到存放单独.exe文件的路径中
windeployqt demo.exe //你的.exe文件名
之后点击该文件夹中的exe文件即可执行
- qt creator不能调试或运行exe,starting executable failed:no such file or directory
- 出现这种情况一般是修改了项目目录或项目名称,把名字改回来就可以了。
- 点 项目 -> run -> 运行,把运行配置改成对应的exe文件即可。
- 或者是 删掉末尾为user的文件,重新配置项目
17.// 设置发送缓冲区大小
socket->setSocketOption(QAbstractSocket::SendBufferSizeSocketOption, 1024 * 1024); // 1MB 发送缓冲区
18.ScrollArea不显示滚动条
确认expending 以及 base_width base_heitght不为0;整体结构是自带一个widget作为内容容器的。
已经超出了Scroll Area部件的大小之后仍然不显示滚动条?
将上面代码中标黄色语句的改成:self.scrollArea.setWidget(this.widget)
Scroll Area部件跟窗口一样,本身也有布局,需要将其布局打开才行。通过鼠标右键单击Scroll Area部件,选择布局设置,选择水平Lay out,。