Qt6.5.3+VS2022 中文乱码的一种解决方案

1.加命令行参数。

解决方案资源管理器中,右键点击项目,选择“属性”(Properties)。

转到 “配置属性” (Configuration Properties) -> “C/C++” -> “命令行” (Command Line)。

在 “附加选项” (Additional Options) 中添加以下编译选项:

/utf-8

2.把这两句加在头文件的开头

#pragma once
#pragma execution_character_set("utf-8")

如果你没有用到自己写的头文件,把第二句加在源文件的开头,不用加第一句。

3.把文件保存成 UTF-8 带签名。

选中文件:在VS里切换到你要保存的文件(有中文的文件),此时标签高亮,如图。

选择“另存为”:点击菜单栏的 “文件” -> “另存为“。 

选择“编码保存”:在弹出的“另存为”对话框中,找到“保存(S)”按钮。点旁边的箭头,然后选择 “编码保存(V)... ”。 选择UTF-8 带签名

附录:

源码字符集:源代码文件(例如 .cpp, .h 文件)在磁盘上实际保存时使用的字符编码方式。

执行字符集:指编译器在编译过程中,将源代码中的字符和字符串字面量转换成何种编码格式,并最终嵌入到生成的可执行文件(.exe, .dll)中。

/utf-8

这一句理论上能够

1.设置执行字符集为UTF-8,并且

2.告诉编译器,源文件是用UTF-8编码的。

但是我在自己的项目上面测试之后,发现必须另外加这两句,这两句的作用是设置执行字符集为UTF-8,和/utf-8的功能重复了,不清楚原因:

#pragma once
#pragma execution_character_set("utf-8")

参考文献:

Qt/C++中文乱码终极解决方案【2024完整版】- 从入门到精通

彻底解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)_qt中文乱码指定utf8-CSDN博客

### QT 6.5.3VS2022 和 PCL 1.14.1 进行点云三维建模软件开发 #### 配置环境 为了使用QT 6.5.3与Visual Studio 2022以及PCL 1.14.1进行点云处理和三维建模应用的开发,需先完成必要的工具链设置。 对于Windows平台上的Qt安装,建议采用在线安装程序并指定MinGW版本以简化依赖管理过程[^1]。然而,在本案例中由于选择了Visual Studio编译器,则应通过Qt Installer选择MSVC套件来匹配VS2022所使用的微软编译器环境。 针对PCL库的支持,可以从官方网站下载预构建二进制文件或自行编译源码。如果决定利用已有的发行版,请确保其适用于相同架构(即x86_64)下的Visual C++运行时,并按照说明集成至项目之中。 #### 创建新工程 启动Qt Creator IDE之后新建一个基于CMakeLists.txt模板的应用程序框架: ```cmake project(PointCloudViewer VERSION 1.0 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) find_package(PCL 1.14 REQUIRED COMPONENTS common io visualization) add_executable(${PROJECT_NAME} main.cpp viewer.cpp viewer.h) target_link_libraries(${PROJECT_NAME} PRIVATE PCL::common PCL::io PCL::visualization) ``` 此脚本定义了一个简单的可执行目标,并链接了Point Cloud Library中的核心模块以便后续操作点数据集。 #### 编写代码实现基本功能 下面展示了一段用于加载PLY格式模型并显示于窗口内的样例片段: ```cpp #include <QApplication> #include <pcl/io/ply_io.h> #include <pcl/visualization/pcl_visualizer.h> int main(int argc, char *argv[]) { QApplication app(argc, argv); pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); if (pcl::io::loadPLYFile<pcl::PointXYZ>("example.ply", *cloud) == -1) return (-1); boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer( new pcl::visualization::PCLVisualizer("3D Viewer")); viewer->setBackgroundColor(0, 0, 0); viewer->addPointCloud<pcl::PointXYZ>(cloud, "sample cloud"); viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "sample cloud"); while (!viewer->wasStopped()) { viewer->spinOnce(); QCoreApplication::processEvents(QEventLoop::AllEvents, 1); } return 0; } ``` 上述程序读取外部存储的多边形文件(.ply),将其转换成内部表示形式后传递给可视化组件负责渲染输出;同时保持事件循环响应用户交互直至关闭请求到来为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值