Qt6.2编译QSimpleScada提示QTextStream无setCodec成员报错如何解决
问题根因
你遇到的编译错误是QSimpleScada库本身未适配Qt6导致的,该库及官方示例都是基于Qt5开发,Qt6对部分核心API做了不兼容调整,所以直接用Qt6编译会报错。
解决思路
方案一:更换编译套件(最省事,无代码修改)
直接切换到Qt 5.15.x版本的MinGW 64位编译套件重新构建项目即可,不需要修改任何库代码或项目配置,就能正常编译运行官方示例。
方案二:适配Qt6(需修改库源码,适合必须用Qt6的场景)
按报错信息逐个修改QSimpleScada库的源码即可:
- 解决
QTextStream没有setCodec成员错误:
Qt6中QTextStream默认使用UTF-8编码,直接删除qscadaboardcontroller.cpp里第264行、第315行的setCodec("UTF-8")调用即可;如果需要保留编码声明,也可以替换为setEncoding(QStringConverter::Utf8)。 - 解决
QMouseEvent不完整类型错误:
Qt6的QWidget头文件不再默认引入QMouseEvent声明,直接在qscadaboard.cpp的头部添加#include <QMouseEvent>即可。
内容的提问来源于stack exchange,提问作者Gameriker
相关产品推荐
相关产品推荐

