- 博客(26)
- 收藏
- 关注
原创 bool QWidget::close()的小细节
Qt::WA_DeleteOnClose标志还会影响窗体在内存中的状态,如果设置了该标志,窗体就会被删除,而hide则不会。一个(应用)程序通常拥有多个窗口,关闭(或删除)一个窗口,并不一定会使程序终止,Qt中关闭窗口使用QWidget::close()槽函数,终止程序使用的是QCoreApplication::quit()静态槽函数或QCoreApplication::exit()静态函数。如果widget有Qt::WA_DeleteOnClose标志,则widget也会被删除。1 关闭widget。
2024-11-05 11:06:37
455
原创 qt通过动态库连接mysql
这两步qt就可以连接MySQL,如果是打包程序,则直接把这4个文件放到打包的exe同文件内就搞定。2.把mysql的动态库加到qt 的bin文件内;1.找到qt的mysql动态库。
2024-09-26 11:20:14
166
原创 qt接收扫码枪数据
使用扫码枪时,扫码枪会模拟键盘输入,并将扫描到的条形码作为键盘事件发送给计算机。然而,有时候使用keyPressEvent函数来捕获扫码枪的输入可能会有一些问题。一个常见的问题是扫码枪的输入速度可能比正常的键盘输入速度更快。这可能导致在处理每个按键事件时,Qt事件循环无法及时处理所有的按键事件,从而导致一些按键事件被丢失。为了解决这个问题,你可以考虑使用Qt中的其他方式来捕获扫码枪的输入,而不是依赖于keyPressEvent函数。方法 一 事件过滤。
2024-09-13 14:38:27
517
原创 qt的http服务器成功处理向外网请求并发送给自己客户端,服务器的请求来自自己客户端的请求,
Database的构造函数中做两个信号槽连接,其中Lambda的addressGet是QMap<QString,QByteArray>addressGet,存储ID和请求值,服务器发送给客户端时候取出来。这里数据没有做读写锁的操作,因为每个ID是唯一的,发送完可以删除容器内ID,对其他客户端不影响。HttpRequest的实现中发送数据类的信号,把请求的ID传递到Database槽。Database槽函数getSlots(QByteArray id)实现。
2024-09-13 12:09:19
173
原创 qt事件循环笔记
notify和一起工作,构成了Qt事件处理机制的核心。notify方法是Qt事件系统与应用程序之间的接口,而则负责实现事件的具体过滤和分发逻辑。通过这种方式,Qt能够灵活地处理各种类型的事件,同时允许开发者通过安装事件过滤器来拦截和修改事件的传递过程。通过上面的分析,可以获得5种处理或过滤事件的方法;1.重写事件;2.event中处理;3.事件过滤器;4.notify;5QApplication安装事件过滤器。
2024-07-13 23:09:27
1576
原创 mysql基本操作笔记
3.1指定条件更新(replace用法):update 表set 字段1=replace(值)…2.查询数据: select 字段1, 字段2 from 表名 where 限定条件;alter table 表名 modify 列名 新数据类型;1.创建表(字段):CREATE TABLE 表名(字段)alter table 表名 rename to 新表名;alter table 表名 add 列名 数据类型;alter table 表名 drop 列名;show create table 表名;
2024-07-10 17:42:16
356
原创 qt利用其他网络接口(如百度AI)获得其算法结果并解析的方法
QNetworkAccessManager ,QNetworkRequest,QNetworkReply,这3个类组合一起可以发出数据请求,然后根据QNetworkReply的应答信号finished来获取请求的数据,可以根据QNetworkReply中readAll来解析所请求的数据,(例如用百度的AI接口可以用来人脸识别, 即我提供数据通过前面的3个类发送请求 然后根据信号finished利用槽函数中QNetworkReply中readAll来获取百度算法计算好的结果,当然请求方法要根据接口要求对应)
2024-07-03 09:05:41
702
原创 QVariant与QImage的转换demo
QVariant 作为函数参数时候, 实际传入QImage,看起来是QVariant将QImage做了隐式转换一样(可能是qt的元对象做了某些处理);4 paintEvent打印出了 QVariant将QImage转换后的图片。3 函数initQimage 接受image 并返回。1 .h中声明 QImage image;2 cpp添加图片到image。
2024-07-01 21:52:53
382
原创 c++指针值传递的坑
P只是 str的一个拷贝值, p开辟了空间,但是str的值还是原来的空值, p在函数运行完就释放了,str这里没有内存空间;函数的参数会产生一个临时变量,指针也是变量,所以这里指针是值传递,改变P开辟了空间而str没有得到改变;
2024-06-27 10:37:01
252
原创 c++多态 函数重写与隐藏 (多态 虚函数表和指针)
2. obj2 指向Derived的指针, 调用与父类同名函数时候,父类的同名函数会被隐藏(就近原则);3.上面举例有多态 继承 虚函数 虚函数表 隐藏(覆盖) 等知识, 包括重载这里我都不写了。1. 定义基类obj 指针指向基类, 调用非虚函数FunB()会调用基类的FunB();
2024-06-26 16:54:21
194
原创 c++的拷贝构造问题,为什么类写了拷贝构造最好也要重写赋值运算符
2. 重写赋值运算符: 如果类对象中有指针,对象是给旧对象复制,这个时候调用赋值方法,如果没重写,也会导致内存重复释放,1. 重写拷贝构造,可以避免深拷贝与浅拷贝的问题,避免内存被重复释放;所以类写了拷贝构造最好也要重写赋值运算符;
2024-06-26 10:49:45
199
原创 构造函数为什么要有const 引用
2. 函数返回值调用拷贝构造时候,返回值产生的临时值是常属性,所以拷贝构造得加const去匹配。1. 引用是为了避免值传递无限递归。
2024-06-24 08:55:29
640
原创 RPC
RPC(Remote Procedure Call,远程过程调用)是一种技术,它允许计算机程序调用另一台机器(服务器)上的程序或服务,而这个过程对于开发者来说看起来就像是本地过程调用一样。RPC 抽象了底层的网络通信过程,使开发者无需关心网络交互的细节,直接进行函数或方法的调用。
2024-06-19 10:27:50
91
原创 C++网络编程中,网络粘包
网络粘包是指在TCP协议中,发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。简单来说,就是当发送方连续发送多个数据包时,接收方可能会将这些数据包合并为一个较大的数据包进行接收,或者接收方在接收数据时,一个较大的数据包被拆分成多个小的数据包。网络粘包是C++网络编程中常见的问题之一,主要发生在TCP协议通信过程中。为了解决这个问题,可以采用定长消息、分隔符消息或封包和解包等方式来确保数据的正确传输和解析。
2024-06-19 10:24:29
313
原创 c++数据序列化
C++数据序列化是指将一个内存中的对象转换成一串字节数据(通常存储在一个字节数组中),以便于保存到本地文件或通过网络进行传输。这个过程将对象的状态信息转换为一种可以存储或传输的形式。简单来说,序列化就是将对象实例的状态转换为可保持或可传输的格式的过程。总的来说,C++数据序列化是一种强大的技术,它允许程序员轻松地保存、加载和传输对象的状态,从而简化了应用程序的开发过程。
2024-06-19 10:11:34
249
原创 c++大小端
在这种模式下,数据的最高有效字节(Most Significant Byte, MSB)存储在内存的最低地址处,而最低有效字节(Least Significant Byte, LSB)则存储在最高地址处。因为不同的系统可能使用不同的大小端模式,所以如果在这些系统之间传输数据,可能需要执行适当的字节顺序转换(也称为"端序转换"或"字节序翻转")。:在这种模式下,数据的最低有效字节(LSB)存储在内存的最低地址处,而最高有效字节(MSB)则存储在最高地址处。在C++中,可以使用一些库函数(如。
2024-06-19 10:00:48
384
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人