Qt 6.2.1 + Visual Studio 2022 环境常见问题汇总

测试环境

Win11 + AMD R9 + Visual Studio 2022 + QT 6.2.1


Q1:Visual Studio 环境生成报错

默认设置生成WidgetAPP后VS会报一大堆错误,进行以下设置后可以正常生成(不能消除所有错误)

  • 解决方案属性 → 常规 → C++标准 改为 "ISO C++ 17 标准"

  • 解决方案属性 → 命令行 → 其他选项添加 /Zc:__cplusplus


Q2:不能通过Codec来设置中文编码

  • QT5中删除了以下代码

  QTextCodec::setCodecForTr(...)
  QTextCodec::setCodecForCStrings(...)
  QTextCodec::setCodecForLocale(...)
  • QT6中直接移除了整个了QTextcodec库

  • 可以通过安装QT5兼容模块,然后在QTCreator中配置pro文件来获得该库

 greaterThan(QT_MAJOR_VERSION, 5):  QT += core5compat
  • QT5及其以后版本,文件将默认使用UTF-8编码

  • Visual Studio无法配置兼容模块,无法使用上述代码,也不能设置UTF-8

  • 在C++11以后的代码中,字符串可以用以下形式来声明为u8

 QString s= u8"中文测试";

Q3:Visual Studio 与 Qt Creator 生成的项目相互兼容问题

QtCreator生成项目没有sln文件

在Visual Studio中选择扩展 → QT Tools → Launch Qt Project File(.pro) 会自动生成sln文件,打开后根据提示解决兼容性问题 报错问题参照上文Q1

Visual Studio生成项目没有pro文件

右击解决方案 → Qt → Create Basic.pro File 根据提示生成pro文件,可以进行相关配置,也可以在Creator中打开


Q4:Visual Studio中生成的ui文件不生成头文件与源文件

最新解决方案:右键Add时选择 Add Qt Class

QTCreator中新建ui窗体会生成.ui文件并附带头文件.h和源文件.cpp,VS中新建则只会生成ui文件,并不会附带头文件和源文件

  • 在Visual Studio中必须右键ui文件→编译才会生成ui头文件,编译生成的头文件存储在 ./x64/Debug/uic中

    • 实测编译后不需要在设置中添加包含目录就可以直接include

  • 项目内对应的头文件与源文件需要自己创建

  • 头文件与源文件命名应与ui文件相同

  • 头文件需要包含以下部分

    • include 窗体基础类型 和对应的ui头文件"ui_xxx.h"

      • 新建项目时默认的主窗体的头文件已经预编译生成,具有自定义的名称

      • 在QTCreator中新建的项目文件不会include生成的ui头文件,声明在项目内就完成(命名空间的宏定义声明就包含在项目中的头文件里)

      • 自定义的ui文件编译的头文件中Class的名称默认为Ui_className,namespace中定义的Class名称默认为上述的className【className为ui文件中窗体对象的名字

      • 指针声明与后续定义中的className为此处的名称应为对应的ui头文件中的className

    • 类的基础声明

      • 声明与当前文件名同名的类

      • 继承基础类型,并声明Q_OBJECT宏

    • 其他基础声明

      • 构造函数与析构函数

      • 声明与ui挂钩的指针 Ui::className *ui;

  • 源文件需要包含以下部分

    • include 上面声明的头文件

    • 定义构造函数

    • 执行窗口基类构造函数

    • 初始化ui指针:堆分配空间给ui(调用ui::className() 构造函数

    • 函数体中调用 ui->setupUi(this) 来将组件挂载到ui指针指向的类里

    • 定义析构函数:delete ui指针


Q5:Visual Studio 中打开ui文件闪退

解决方式

右键 ui 文件 → 打开方式 → 添加 → 找到QT目录下 /版本号/msvc_xxxx/bin/designer.exe 添加到 程序 → 参数留空,名字自己起 → 确定,选择新建的打开方式为默认

问题原因

默认的打开方式有点问题

你可能感兴趣的:(Qt,C++,qt,开发语言,visual,studio)