- 博客(15)
- 收藏
- 关注
原创 fopen函数打开中文路径(utf-8)失败分析
那么qt在windows下运行底层会调用Windows的API CreateFile,而windows用的编码是GBK,所以即使qt设置了使用utf-8编码那么到底层执行windows的API仍然会使用GBK编码,故需要转换路径字符串为GBK编码后放能被fopen识别。先将源编码转换为 Unicode(中间格式),再从 Unicode 转换为目标编码。gb2312转换utf-8。utf-8转换gb2312。
2025-12-11 19:32:24
124
原创 QSettings读写中文配置文件底层编码分析
1.在C++中,wchar_t是用于表示宽字符的数据类型,主要用于支持 Unicode 字符集,能够表示多种语言的字符,包括中文、日文等非 ASCII 字符。它的大小通常为 2 字节或 4 字节,具体取决于平台和编译器其具体字节数在不同平台上有所不同:Windows通常使用UTF-16(2字节),而Linux和macOS则通常使用UTF-32(4字节)。这种差异导致在跨平台开发中,宽字符字符串的处理方式不一致,尤其是在文件读写时容易出现乱码。
2025-12-09 16:01:45
652
转载 字符编码详解
字符集(Character Set) 是多个字符与字符编码组成的系统,由于历史的原因,曾经发展出多种字符集,例如:字符集一多起来,就容易出现兼容问题: 即同一个字符在不同字符集上对应不同的字符编码。例如,最早的 emoji 在日本的一些手机厂商创造并流行起来,使得 emoji 在不同厂商的设备间无法兼容。要想正确解析一个字符编码,就需要先知道它使用的字符编码集,否则用错误的字符集解读,就会出现乱码。想象一下,你发送的一个在女朋友的手机上看到的是另一个 emoji,是一件多么可怕的事情。
2025-11-22 18:24:41
25
原创 VS程序读取文件后中文内容是乱码问题总结
了解了c++对字符的几种处理后了解了,中文字符和英文字符的内存中存储的字符长度是不一样的,英文都是单子符,而中文日文韩文都是一个字符占2个或者3个字节(与编码种类有关),所以当用string类型的变量处理中文字符串时肯定会失败因为string专门处理英文字符,按单个字节解析,当有中文时就会组合成乱码,所以针对中文字符串应该使用wstring来处理,#include 包含头文件,wstring_convert<std::codecvt_utf8<wchar_t>> converter;将宽字符转换成单字符。
2025-11-15 17:22:33
350
原创 QScrollArea的viewport大小计算方法总结
QScrollArea作为一个用单个QWidget类窗口来显示超出窗口显示范围的类对象的工具类,调用setWidget(QWidget *widget)来设置其要显示的子Widget,其真正用来有效显示子Widget的区域是viewport的QWidget类子成员对象,因为当子Widget大小超过viewport的大小后滚动条就会出现,此时viewport的大小会被压缩变小,即QScrollArea->viewport->子Widget的层次关系,大概层次架构如此。
2025-10-18 17:21:07
415
原创 VS不显示SDK版本或WindowsSDK_IncludePath宏识别错误或为空或找不到SDK版本等问题汇总
(1).检查windowskit/10/下面有没有安装此版本的SDK,若没有可以用VS installer下载单个组件(2).解决目标方案或项目里面重定向选择对应的windows sdk版本(3).打开Kits/10/Design Time /CommonConfiguration/Neutral/UAP/10.xxx.xxx.0/UAP.props文件,处改成,因为此值与WindowsSdkDir宏定义的值相关,所以没设置之前WindowsSdkDir的值为空会报错找不到Windows SDK版本,设
2025-09-05 18:12:38
696
原创 使用windows终端运行windeployqt会导致寻找错误依赖库(已解决)
要想发布qt程序万无一失,最保险的办法是使用对应的编译器的终端来运行windeployqt.exe,这样无需做任何事情无须设置环境变量并且找到的库齐全准确,发布qt程序一次就成功省时省力。
2025-08-30 09:45:59
224
原创 QT事件处理机制(发布事件)
在ChatGPT💬上搜索到的概念是:在Qt中,事件循环是一种机制,用于处理各种异步事件。事件循环通过一个事件队列来管理和调度事件,当队列中有事件时,事件循环会从队列中依次取出事件并处理,直到队列为空或者事件循环被中断。事件的产生可以是用户输入、系统信号、网络请求、定时器等,Qt提供了一系列的事件处理函数和信号槽机制,可以方便地将这些事件与具体的操作相绑定。因此,Qt的事件循环机制是Qt应用程序实现异步响应和多线程编程的基础。个人理解,Qt的事件循环是通过一个队列来循环处理事件的机制。
2024-08-21 10:53:44
1955
原创 Qt事件处理机制(系统消息)
Qt事件处理机制(系统消息)你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体:Ctrl/Command + I标题:Ct
2024-08-20 20:13:15
2122
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅