
qt
初夏微凉夜
这个作者很懒,什么都没留下…
展开
-
qt中文乱码原因分析及解决方案
首先说明几个基础概念UTF-8 BOM和UTF-8。BOM在文件头位置占三个字节,用来标识UTF-8编码,软件通过BOM来识别这个文件是否是UTF-8编码。 源码字符集。源码文件使用何种编码格式保存的。 执行字符集。可执行程序内保存的是何种编码(程序执行时内存中字符串编码)。 QString::fromxxx()函数。代表将字符串以对应格式去解析成执行字符集,qt程序运行的时候字符串编码在QString中实际都是以unicode编码存储的。fromLocal8Bit()代表从本地字符集(系统设..原创 2020-08-04 00:42:27 · 4056 阅读 · 0 评论 -
qt事件循环阻塞机制分析
关于事件循环所有对象的exec()方法都是开启事件循环,QApplicaion::exec()为主事件循环。程序在exec()里面无限循环,能让跟在exec()后面的代码得不到运行机会,直至程序从exec()跳出 事件循环能接收事件并处理。待处理事件被放在事件循环队列里顺序处理 事件循环的本质就是以队列的方式分配线程时间片,程序所有的代码都活动在事件循环里 事件循环是嵌套的,子层的事件...原创 2020-05-04 04:11:15 · 5500 阅读 · 2 评论 -
qt信号槽跨线程使用时候的坑
信号槽connect的时候扩展有5种,在跨线程使用的时候选择不同的参数会有不同的效果,使用不当会造成线程同步甚至崩溃的问题。5种参数的意义不再累述,可以参考信号槽的多线程安全性讨论 第一个坑 跨线程时connect使用Direct Connection (直接连接) 跨线程触发槽的时候,因为信号和槽不在一个线程内需要考虑同步问题(参考 信号槽的多线程安全性讨论),比较简单的方式是槽函...原创 2020-03-08 22:48:17 · 6415 阅读 · 0 评论 -
信号槽的多线程安全性讨论
讲正题之前首先需要了解几个基础知识点: 信号槽的连接方式 connect()函数的参数如下:QMetaObject::Connection QObject::connect(const QObject * sender, const char * signal, const QObject * receiver, const char * method, Qt::Connecti...原创 2020-03-07 01:15:46 · 2925 阅读 · 0 评论 -
qtcreator多线程编译参数和release调试参数
构建-make参数开启八核编译:MAKE="mingw32-make -j8"qmake额外参数开启release调试:QMAKE_CXXFLAGS_RELEASE=$$replace(QMAKE_CXXFLAGS_RELEASE,'-O2','-O0') QMAKE_CXXFLAGS_RELEASE+=-g QMAKE_CFLAGS_RELEASE+=-g QMAKE_LFLAGS_REL...原创 2020-01-09 09:42:09 · 1774 阅读 · 0 评论 -
qwebsocket使用wss通信时的应注意的问题
qt里面的qwebsocket从5.10版本以后支持wss,但是需要先做ssl设置,官方文档上并没有说明这一点,本人刚开始使用的时候绕了很多弯路。现在将设置方法记录一下,希望可以帮助到大家。wss连接大概原理就是在ws连接之前使用ssl套接字先建立一次安全通道,然后在使用ws连接。所以我们在使用qwebsocket之前需要先进行ssl认证。首先去官方网站http://slproweb.com/原创 2018-01-11 18:15:06 · 6731 阅读 · 2 评论 -
使用zlib开源库解压时内存崩溃问题解决
最近一个项目中用到了解压缩,打算使用zlib开源库封装quazip在qt中开发,但是在解压缩过程中遇到了内存崩溃现象,错误指向了inflate_fast里面的汇编模块。最后经过分析发现是编译zlibwapi.dll的时候使用汇编模块造成的bug。解决方法用c编译方式取代汇编方式,在zlib源码的zlibvc工程属性-预处理器定义里面去掉 ASMINF 定义,这样就可以屏蔽掉汇编模块了。但是原创 2018-01-04 20:58:13 · 3419 阅读 · 6 评论