前言
花了两三天写了一个小工具,用于将开源游戏金庸群侠传3D重制版的Mod上传到Steam创意工坊。
这里记录下使用QT开发的一些问题。
问题
使用信号槽机制connect相关回调时找不到可匹配的函数。
- 原因: 部分UI类的slot函数存在多个同名函数重载的情况.
- 解决: 使用
QOverload<T>::of显示地指定对应函数地址。
QMake文件找不到win64的条件编译宏
- 添加依赖库时需要区分
x86和x86_64的Steamlib时发现没有针对64位系统的宏。 - 解决: 使用自定义宏手动控制,如下。
1
2
3
4
5
6
7
8
9DEFINES += USE_x64
win32
{
contains(DEFINES, USE_x64){
LIBS += -L$$PWD/steam/win64 -lsteam_api64
}else{
LIBS += -L$$PWD/steam/win32 -lsteam_api
}
}
无法使用QWebEngineView依赖控件
- 解决:
QTCreator构建编译器默认选择的MingGW,但该环境下QWebEngineView不包含在依赖库里,换用MSVC编译即可。
切换到MSVC后编译错误 “ Visual Studio error C2001:常量中有换行符 “
原因:
MSVC编译时使用的默认编码是根据windows本地语言来的,中文运行环境下为GBK,但是QT保存编码为UTF-8。因此MSVC编译时如果代码文件包含中文就会出现该问题。解决: 项目的.pro文件里添加如下指令强制
MSVC使用UTF-8编码1
2
3
4msvc {
QMAKE_CFLAGS += /utf-8
QMAKE_CXXFLAGS += /utf-8
}
Release构建完成后只有exe没有相关DLL
- 解决: CMD命令行运行
qwindeploy.exe [exe输出路径]即可生成相关依赖库。
总结
- QT文档 + Google + Stackoverflow 能解决99%的问题。