
qt
文章平均质量分 81
小飞侠hello
这个作者很懒,什么都没留下…
展开
-
Protobuf
Protocol Buffers (protobuf) 是 Google 开发的一种高效的结构化数据序列化工具,而 protoc 是它的编译器,用于将 .proto 文件编译成目标语言的代码(如 Java、Python、C++ 等)。原创 2025-04-17 16:31:32 · 594 阅读 · 0 评论 -
mqtt学习
客户端负责保证 控制报文 发送的时间间隔不超过设定的保持连接的值,如果没有任何其他的控制报文可以发送,则达到时间间隔尽头,发送PINGREQ控制报文(*就是心跳请求控制报文,当然也可以不在时间间隔尽头发送,只是几乎所有的项目代码都设定为时间间隔尽头而已)保持连接是一个以秒为单位的时间间隔,16位(最大设定为16位全1,即18个小时),表示在客户端传输完成一个控制报文的时刻到发送下一个报文的时刻,两者之间允许空闲的最大时间间隔。为此,带有唯一消息 ID 的消息会存储两次,首先来自发送者,然后是接收者。原创 2024-10-14 14:35:38 · 1268 阅读 · 0 评论 -
QTcpSocket 及QTcpServer 多线程使用
注意:如果你想处理在另一个线程一个新的QTcpSocket对象传入连接,您必须将socketDescriptor传递给其他线程,并创建了QTcpSocket对象存在并使用其setSocketDescriptor()方法。该函数会创建一个QTcpSocket,并设置套接字描述符为socketDescriptor,然后存储QTcpSocket在挂起连接的内部清单。接收函数:readAll、发送函数:write、关闭连接函数:close 都需要在子线程实现。重新实现这个函数来改变服务器的行为,当一个连接可用。原创 2024-09-03 15:21:06 · 2060 阅读 · 0 评论 -
Qt WebSocket
3)保持连接状态:与 HTTP 不同的是,WebSocket 需要先创建连接,这就使得其成为一种有状态的协议,之后通信时可以省略部分状态信息;在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行。1)较少的控制开销:在连接创建后,服务器和客户端之间交换数据时,用于协议控制的数据包头部相对较小;5)可以支持扩展:WebSocket 定义了扩展,用户可以扩展协议、实现部分自定义的子协议。如: ws://example.com:80/some/path。原创 2024-08-26 17:01:02 · 1920 阅读 · 0 评论 -
qt中实现多语言功能
其中,location没有也可以,只是QT语言家打开.ts文件时定位不到字符串位置而已,主要还是source 元素和translation元素,source元素相当于字符串的id,翻译家通过source在lang_zh_CN.ts找中文文本,在lang_en.ts找英文文本。然后在Qt Creator中,使用:工具->外部->Qt预言家->部署翻译(lrelease),就会生成需要的qm文件或者在Linguist中点击文件->发布。生成qm文件之后,在main.cpp文件中添加下面的代码,加载qm文件。原创 2024-05-29 15:52:08 · 1511 阅读 · 0 评论 -
qt QTreeWidget 学习
/ 设置列标题为 "Name" 和 "Value"void itemChanged(QTreeWidgetItem * item, int column) //条目列的数据发生变化,比如文本或图标修改了。// 创建一个子节点。void itemDoubleClicked(QTreeWidgetItem * item, int column) //条目列被双击。void itemActivated(QTreeWidgetItem * item, int column) //条目列被激活。原创 2024-04-25 14:46:32 · 1187 阅读 · 0 评论 -
qt 信号槽
使用某对象时,用指针指向另一个对象的函数,这个函数就称为回调函数。3、Qt::QueuedConnection:信号发出后,信号会暂时被放到一个消息队列中,需等到接收对象所属线程的事件循环取得控制权时才取得该信号,然后执行和信号关联的槽函数,这种方式既可以在同一线程内传递消息也可以。观察者模式,激发信号的Qt对象无须知道是哪个对象的哪个槽函数需要接收它发出的信号,它只需要做的是在适当的时间发送适当的信号就可以了,而不需要知道也不关心它的信号有没有被接收到,更不需要知道哪个对象的哪个槽接收了信号。原创 2024-04-19 14:20:55 · 997 阅读 · 0 评论 -
qt 元对象系统及属性系统
type:连接类型;invokeMethod为信号槽而生,你可以指定连接类型,如果被调用的对象和发起调用的线程是同一线程,那么可以使用Qt::DirectConnection、Qt::AutoConnection、Qt::QueuedConnection,如果被调用对象在另一个线程,那么建议使用Qt::QueuedConnection;(4)函数qobject_cast(): 对于Object及其子类对象,可以使用函数qobject_cast()进行动态类型转换,此处可以理解为c++中的强制类型转换。原创 2024-04-17 15:10:59 · 1181 阅读 · 0 评论 -
Qt使用插件QPluginLoader 机制开发
在这种情况下,插件可以提供任意功能,不限于数据库驱动程序、图像格式、文本编解码器、样式以及扩展Qt功能的其他类型的插件。这个宏第一次参数定义了一个uuid,保证唯一即可,第二个json是必须要有的,当无法找到指定的文件时,moc 会出现错误,即使是空的文件也行。如果 QPluginLoader 的其他实例正在使用相同的插件,则调用将失败,并且只有在每个实例都调用了 unload() 时才会发生卸载。一种高级API,用于为Qt本身编写插件:自定义数据库驱动程序,图像格式,文本编解码器,自定义样式等。原创 2024-04-08 11:16:52 · 2232 阅读 · 1 评论 -
qtxlsx 学习
QXlsx是一个可以读写Excel文件的库。不依赖office以及wps组件,可以在Qt5支持的任何平台上使用。原创 2024-03-27 13:53:45 · 2103 阅读 · 0 评论 -
qt QProcess学习
terminate(),区别于 kill() 这种暴力的退出不同,它在退出进程的时候是有机会提示用户输入任何为保存的文件等。进程的输出通道与QProcess的读取通道相对应,⽽进程的输⼊通道与QProcess的写⼊通道相对应。这是因为我们使⽤QProcess读取的内容是进程的输出,⽽我们编写的内容则成为进程的输⼊。调⽤start()函数或open()函数启动进程。以分离的方式启动外部程序,外部程序与主程序互不干扰,外部进程的父进程是。的方式启动外部程序,外部进程与主程序互不干扰,但外部进程的父进程就是。原创 2024-03-21 08:45:09 · 1754 阅读 · 0 评论 -
qt Qt Remote Object(QtRO)实现进程间通信
功能提供节点(可以理解为服务器)需要使用QRemoteObjectHost将一个提供实际功能的QObject派生类注册进QtRO网络中,然后其他使用该功能的程序则通过各自的QRemoteObjectNode连接到该Host上,然后acquire一个该功能对象的Replica。host 不能直接访问当前连接的 node,服务端是所有已连接的 node 共享的,如果 host-source 发信号,那么所有连接的 node 都会收到这个信号。Signal方法是通过使用rep文件中的SIGNAL关键字创建的。原创 2024-03-20 10:21:47 · 1954 阅读 · 0 评论 -
linux 下崩溃文件coredump 生成及调试分析
Windows环境崩溃问题(dump)可根据vs调试或windbg工具查看.linux环境崩溃文件为core文件,可以使用gdb进行调试分析。原创 2022-12-30 18:29:03 · 6128 阅读 · 0 评论 -
NSIS 安装windows 安装包(包括QT和MFC)
Function<函数名>FunctionEn用户自定义函数仅当是Call指令调用时才被执行。原创 2024-01-09 09:27:10 · 1345 阅读 · 0 评论 -
Qt在linux系统上使用技巧
QT在生成动态库时,会默认生成(.so)、(.so.1)、(.so.1.0)、(.so.1.0.0)四个文件。其中,(.so.1.0.0)为实际的动态库文件,(.so)、(.so.1)、(.so.1.0)均为软链接,都是指向(.so.1.0.0)的链接文件,为了版本控制。直接通过绝对路径和相对路径指定库的完整path(需后缀,.lib,.a, .so都适用),相对路径用$$pwd前缀,路径不允许空格。可以用-L指定目录,-l指定库的名称(无需后缀,.lib,.a, .so都适用,这样就不用区分到底是哪种)原创 2024-01-08 16:38:21 · 1447 阅读 · 0 评论 -
学习grpc
int b = 10;Run();return 0;protobuf对简单数据的赋值,简单数据直接采用set_xx()即可该xx为proto文件的定义消息上的变量//在proto定义的消息uint32Type=1;//类型stringPath=2;//路径type(Type);path对应获取变量为直接是。原创 2023-07-06 10:55:55 · 366 阅读 · 0 评论 -
Qt数据类型转换
/按照Utf-8编码转换,可以转换中文。或者strOWPName = QString(QLatin1String(m_chOWPName));不包含中文的遇到中文默认转换为ascii码0x3f也就是字符’?第二种办法:使用静态函数fromUtf8 防止中文乱码,第二种办法:先转成标准库string,防止中文乱码。是本地操作系统设置的字符集编码,一般为GB2312.第一种办法:toUtf8 //防止中文乱码。原创 2023-06-27 19:32:31 · 1527 阅读 · 0 评论 -
Qt 容器介绍
T必须是一个可赋值的类型,即提供一个缺省的构造函数、可拷贝构造函数、赋值运算符。其他的介绍可以参看:https://blog.youkuaiyun.com/baidu_16370559/article/details/123245803。QMultiHash相当于std::unordered_multimap 插入和查找时间复杂度都是o(1)QHash相当于std::unordered_map 插入和查找时间复杂度都是o(1)Qt容器对应STL容器,都是分为序列容器(顺序)容器、关联容器、散列(哈希)容器。原创 2023-06-27 19:03:47 · 931 阅读 · 0 评论 -
qt QDataWidgetMapper讲解
每次当前索引发生变化时,每个小部件都会通过映射时指定的属性使用来自模型的数据进行更新。默认情况下,每个小部件的用户属性用于在模型和小部件之间传输数据。/如果方向为水平,则使用模型第一行的数据填充小部件,否则使用第一列的数据。//按模型某行的数据映射到更新到部件,特别用于模型当前行改变时,发出的。//添加模型和部件的关联映射,section为模型某一列的序号。//将所有更改从映射的小部件提交到模型,用于。//所有未提交的更改都将丢失,用于。//得到当前模型的选中数据的行号。//删除小部件的映射。原创 2023-06-27 10:23:50 · 1243 阅读 · 0 评论 -
qt QSqlRelationalTableModel 详解
用户接口层 用户接口层的几个类实现将数据库中的数据链接到窗口部件上,这些类是使用模型/视图框架实现的,他们是更高层次的抽象,主要包括QSqlQureyModel,QSqlRelationalTableModel为QSqlTableModel 的子类,为单张的数据库表提供了一个可编辑的数据模型,它。: 编辑一个数据表,将代码字段通过关系与代码表关联,将代码字段的编辑转换为直观的内容选择编辑。: 直接设置一个数据表的名称,可以获取数据表的全部记录,结果是可编辑的。主表的代码字段的序号。原创 2023-06-27 09:47:37 · 1315 阅读 · 0 评论 -
Qt QSqlQueryModel详解
用户接口层 用户接口层的几个类实现将数据库中的数据链接到窗口部件上,这些类是使用模型/视图框架实现的,他们是更高层次的抽象,主要包括QSqlQureyModel,QSqlRelationalTableModel: 编辑一个数据表,将代码字段通过关系与代码表关联,将代码字段的编辑转换为直观的内容选择编辑。那如果想编辑修改,只能通过弹出一个对话框的,添加控件的方式进行修改,再结合。: 直接设置一个数据表的名称,可以获取数据表的全部记录,结果是可编辑的。//执行sql语句后,当前位置的结果,位置由。原创 2023-06-26 20:44:05 · 3030 阅读 · 0 评论 -
Qt QSqlTableModel详解
用户接口层 用户接口层的几个类实现将数据库中的数据链接到窗口部件上,这些类是使用模型/视图框架实现的,他们是更高层次的抽象,主要包括QSqlQureyModel,: 直接设置一个数据表的名称,可以获取数据表的全部记录,结果是可编辑的。直接设置一个数据表的名称,可以获取数据表的全部记录,结果是可编辑的。//设置记录数据的过滤条件,过滤的字符串实际上为sql语句where后的字段。//QModelIndex 类的data函数,从而得到某行某列的数据。//查询数据表的数据,并使用设置的排序和过滤。原创 2023-06-26 19:20:50 · 5904 阅读 · 1 评论 -
qt读写文本文件
QIODevice::Text 0x0010 读的时候,文件结束标志位会被转为’\n’;写的时候,文件结束标志位会被转为本地编码的结束为,例如win32的结束位’\r\n’QIODevice::Truncate 0x0008 打开文件之前,此文件被截断,原来文件的所有数据会丢失。QIODevice::WriteOnly 0x0002 只写方式,如果文件不存在则会自动创建文件。QIODevice::Append 0x0004 此模式表明所有数据写入到文件尾。读:read、readall函数。原创 2023-06-23 16:21:42 · 1584 阅读 · 0 评论 -
qt读写二进制文件
注意:必须调用setversion函数设置流版本号,读写流版本号相同,或者读高于写。//向文件流连续写入len个字节的数据,这个只写入数据,不写入数据大小到文件。缺点:也正是因为采用qt预定义的编码,其他编码语言不兼用。//适合于写入字符串数据,先写入字符串的长度到文件,再写入字符串到文件。特点:采用qt预定义的编码。原创 2023-06-26 08:46:45 · 4366 阅读 · 0 评论 -
Qt读写csv文件
一次性读取整个csv文件,先按换行符“\n”进行分割,再按分隔符“,”进行分割。实现复杂:相对于第一种实现方式,该方法需要处理编码问题和字节流转换问题,因此实现方式相对复杂一些。同时,该实现方式要求数据顺序不能改变,因为每行数据只存储在单独的QStringList中。readLine读取每行数据,再使用split进行分割,得到QStringList 数据。当数据量大的时候,使用该方法逐行写入文件,文件I/O开销相对较大,导致写入速度变慢。进行写操作,并写入分隔符“,”和换行符“\n”。原创 2023-06-23 15:11:04 · 5687 阅读 · 0 评论 -
qt读写xml文件
将整个 XML 文档读入内存,构建成一个树结构,允许程序在树结构上向前向后移动导航,这是与另外两种方式最大的区别,也就是允许实现多次解析器(对应于前面所说的一次解析器)。特别适合于实现一次解析器(所谓“一次解析器”,可以理解成我们只需读取文档一次,然后像一个遍历器从头到尾一次性处理 XML 文档,期间不会有反复的情况,也就是不会读完第一个标签,然后读第二个,读完第二个又返回去读第一个,这是不允许的);获取含有属性节点的属性。//获取根/子标签的标签名字,对应于createElement函数的参数。原创 2023-06-23 14:56:48 · 6032 阅读 · 0 评论 -
Qt连接Access数据库
SQL API层 对于SQL API 层提供了数据库的访问相关类,其中,QSqlDataBase类进行连接,QSqlQuery完成数据库的交互。用户接口层 用户接口层的几个类实现将数据库中的数据链接到窗口部件上,这些类是使用模型/视图框架实现的,他们是更高层次的抽象,主要包括QSqlQureyModel,QSqlTableModel and QSqlRelationalTableModel。QSqlTableModel : 直接设置一个数据表的名称,可以获取数据表的全部记录,结果是可编辑的。原创 2023-06-19 20:22:20 · 4203 阅读 · 0 评论 -
Qt调试详细日志文件输出
生成log.txt日志文件,记录详细日志信息(包括等级、所在文件、所在行号、描述信息、产生时间等),以便于快速跟踪、定位。恢复消息处理程序,调用qInstallMessageHandler(0)。那么在qt createor的应用程序输出窗口就不会有调试信息显示。包括等级、所在文件、所在行号、描述信息、产生时间。安装写在main()方法中,这样全局所有类的。都可以将信息直接打印到日志文件中。等函数输出信息重定向处理。qWarning:警告信息。,对qDebug()、回调函数处理日志信息,原创 2023-06-19 19:40:33 · 2266 阅读 · 2 评论 -
Qt实现HTTP
创建QNetworkAccessManager对象后,应用程序就可以使用它通过网络发送请求。该类提供了一组标准函数,它们接收请求和可选数据,每个函数都返回一个QNetworkReply对象。由于QNetworkAccessManager基于QObject,因此只能从它所属的线程中使用它。等类来进行HTTP、FTP的操作,替代之前的QFtp和QHttp。网络通信中最常用的协议就是http协议,Qt对http协议的调用进行了封装,使用非常方便.从Qt4.4开始,引入了。原创 2023-03-17 11:06:16 · 2480 阅读 · 0 评论 -
qt 之QJsonDocument、QJsonObject、QJsonArray解析json
QJsonObject类用于封装JSON对象。JSON对象是包含键值对的链表,其中键是唯一的字符串,其值由QJsonValue对象。用size()来获得键值对的数目,insert()、remove()分别用来插入和删除pair。QJsonDocument和QJsonObject的关联通过调用QJsonDocument的setObject或者直接构造函数参数。QJsonDocument提供了读写Json文档的方法.可以将QJsonDocument转换回文本形式。将基于JSON文档的文本形式转换为QJson。原创 2023-03-16 19:29:07 · 1902 阅读 · 0 评论 -
Qt之QUrl和QUrlQuery
QUrlQuery 类提供了一种方法来操纵 URL 查询中的 key-value 对。上述的查询字符串在 URL 中 被用来传输选项,通常解码为多个 key-value 对。其列表包含了的两个条目,键为“type”和 “color”。原创 2023-03-16 19:05:16 · 1443 阅读 · 0 评论 -
VMware 安装 银河麒麟高级服务器操作系统 V10 + QT 开发环境搭建
从官网下载,因为是x86的电脑芯片,选择AMD64版,即。打开网络,ip4就不用再设置了。创建一个root账号。原创 2023-03-04 16:18:40 · 2867 阅读 · 0 评论 -
qt QCustomPlot学习
QCustomPlot 是一个基于Qt的画图和数据可视化C++控件。QCustomPlot 致力于提供美观的界面,高质量的2D画图、图画和图表,同时为实时数据可视化应用提供良好的解决方案。该绘图库专注于制作美观、出版物质量高的2D绘图、图形和图表,并为实时可视化应用程序提供高性能。原创 2023-02-24 16:19:23 · 8481 阅读 · 1 评论 -
qt 可视化ui设计
QMainWindow 是主窗口类,主窗口类具有主菜单栏、工具栏和状态栏,类似于一般的应用程序的主窗口;QWidget是所有具有可视界面类的基类,选择QWidget创建的界面对各种界面组件都可以支持;QDialog是对话框类,可建立一个基于对话框的界面。原创 2023-02-23 12:14:53 · 1535 阅读 · 0 评论 -
qt qchart学习
新图表的所有权被传递给图表视图,并且先前图表的所有权被释放。3. 在使用QChart的各个控件之前,引用头文件并必须先声明一个命名空间。QChartView是QGraphicsView子类,相当于是显示图表的视图。QChart是QGraphicsItem的子类,相当于是显示图表的图形项。原创 2023-02-22 17:49:46 · 2443 阅读 · 0 评论 -
QT pri文件模块化开发
在源码的目录下,创建一个文件夹命名如graphicsviewsitem。在文件夹创建一个.pri文件如graphicsviewsitem.pri.把你要分类的源文件和头文件从工程目录底下剪切到view文件夹底下和pri同级。在pro文件中添加pri文件。在pro中把头文件路径加进来。在项目的Pro文件中加入。把头文件和源文件剪贴过去。原创 2023-02-21 17:27:41 · 215 阅读 · 0 评论 -
QT 拖拽 QListWidget发送,Qgraphicview接收
主要重写dragEnterEvent、dragMoveEvent、dropEvent。测试发现:item在视图存放的位置一直有问题。也没有解决item图形项位置的问题。尝试使用视图类来处理拖拽,参考。原创 2023-02-20 17:58:47 · 1217 阅读 · 0 评论 -
模型视图 上控件的拖拽
模型通过重新实现 QAbstractItemModel::flags() 函数以提供合适的标志,向视图指示哪些项目可以拖动,哪些将接受放置。模型通过重新实现 QAbstractItemModel::mimeTypes() 函数并返回标准 MIME 类型列表来声明它们可用于提供项目的 MIME 类型。拖入的数据由模型重新实现的 QAbstractItemModel::dropMimeData() 处理。属性用于控制在拖拽过程中显示当前拖拽到的位置,当释放时则在当前拖拽位置覆盖或插入。模型对拖放操作的支持。转载 2023-02-20 15:19:41 · 532 阅读 · 0 评论 -
qt 内存泄漏处理办法
b.将“vld安装目录/lib/Win64"或者“vld安装目录/lib/Win32"(注意位数,根据你的Qt库位数确定)下的vld.lib拷贝到qt具体项目的lib目录。可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在文件及行号;可以设置内存泄露报告的级别。a.复制vld安装目录下include文件夹中的文件vld.h和vld_def.h到qt具体项目的include文件夹中。将安装目录下的VLD\bin\Win32和VLD\bin\Win64添加到系统环境变量path里。原创 2023-02-17 12:17:36 · 2627 阅读 · 0 评论 -
qt 崩溃处理
配置Symbol file path(符号路径)、Source file path(源文件路径)、 Image File Path(可执行文件路径):可执行文件路径(这个选择具体的exe文件报错,只能选exe文件所在文件夹)release版本是不会自动生成pdb文件的。:把生成的pdb文件所在目录及微软符号服务器加进去。生成exe自带生成pdb文件,所以无需处理。办法是:在pro文件中加入。原创 2022-12-30 16:39:58 · 3385 阅读 · 0 评论