
Qt
文章平均质量分 53
lusanshui
一个孤独与欲望的容器 一段崎岖而奇妙的旅程
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Qt下绘制PPI扫描的雷达图
简述PPI扫描,即每次按一个仰角进行扫描,得到二维图像的方式。它的特点是来自不同距离的回波是离地面不同的高度上,扫描得到的数据在空间类似一个倒立圆锥的曲面表面。Qt可以用OpenGL绘制复杂的图像,但为了简单和兼容性,这里介绍的是用Qt自己的绘图工具QPainter绘制PPI二维图像。代码之路...原创 2019-11-12 14:18:04 · 5163 阅读 · 9 评论 -
Qt信号槽传递自定义的数据类型
简述Qt使用信号槽传递自定义类型的结构体,必须先要将这种类型进行注册。实现注册自定义数据类型方法步骤分为三步:1)加入头文件:#include2) 添加声明:Q_DECLARE_METATYPE(YOURS_STRUCT);3) 注册:qRegisterMetaType(YOURS_STRUCT);头文件没有什么可说的,不需要进入新的模块;声明在定义结构体YOURS_STRUCT之...原创 2019-01-09 09:41:20 · 1150 阅读 · 0 评论 -
Qt下实现线程中的TCP服务器
简述TCP服务器的代码实现比UDP略为复杂一点,因为TCP的服务端需要生成与管理一个额外的QTcpServer对象。为了支持多线程,用moveToThread方法把服务器放在一个单独的线程中。代码之路用MyTcpServer类实现TCPserver,供主程序调用方法。MyTcpServer类头文件内容如下://MyTcpServer.h# include <QObject>...原创 2019-03-15 09:23:43 · 3540 阅读 · 4 评论 -
Qt实现TCP文件服务器(服务器发送文件)
简述TCP文件服务器的实现,可以在TCP服务器的基础上增加文件发送逻辑。参阅TCP文件服务器的实现。【https://blog.youkuaiyun.com/lusanshui/article/details/88565806 】代码之路直接给出完整的TCP文件服务器代码。MyFileServer类的头文件如下:#include <QTcpServer>#include <QTc...原创 2019-03-15 10:00:48 · 1840 阅读 · 0 评论 -
Qt实现UDP通信
简述本文用UdpReciver类实现UDP数据包接收,用UdpSender类实现UDP数据发送。代码之路UdpSend类头文件如下://UdpSend.h# include &lt;QUdpSocket&gt;class UdpSender : public QObject{ Q_OBJECTpublic: UdpSender(); ~UdpSender(); void i...原创 2019-03-15 10:26:55 · 20565 阅读 · 10 评论 -
Qt下使用第三方开源库实现文件压缩(C++开源库zlib)
简述前段时间有个项目需要将文件进行压缩处理,效率最高的当然是直接集成源码,调用接口函数。下面介绍如何使用开源库zlib,通过函数调用的方式实现文件压缩。代码之路在官网上下载zlib开源库代码,拷贝源码中的minizip文件夹到项目目录,添加minizip文件夹下的文件。 minizip文件夹下有两种格式的文件,.h文件为头文件,.c文件为源文件,具体如下: 头文件:crypt.h ioa...原创 2019-05-05 15:25:09 · 2001 阅读 · 4 评论 -
Qt下编写日志模块(同时记录文件名、函数名、行数)
简述说来惭愧,一直以来,我都是使用一个单例模式来完成日志模块,具体操作就是调用单例的写文件函数,自己编辑日志内容,记录在日志文件里。这种做法只是不利于查找调试。而使用qt内置的qInstallMessageHandler函数,重新编辑调试函数的输出内容才是简单高效的做法。调试级别名字很高大上,其实大家都在使用的qDebug()就是。qDebug() – 调试信息输出;qInfo() –...原创 2019-07-03 11:05:33 · 2251 阅读 · 1 评论 -
Qt中QTimer和timerevent的区别与用法
简述最近看到有用startTimer()配合timerEvent()来实现定时执行的用法,甚是不错,记录一下。为了全面性,顺带介绍使用QTimer实现定时执行的常用方法,并结合代码示例。QTimer常见用法QTimer实现定时执行的方法想必大家都无比熟悉,直接上代码进行说明。QTimer的普遍用法如下,示例中使用QTimer每隔10s调用压缩文件函数。//.h文件--声明QTimer对...原创 2019-07-29 14:23:37 · 17302 阅读 · 1 评论 -
Qt下如何创建多工程项目(包含创建和使用动态库)
引言本文的编写目的是希望读者可以学会:1、在Qt下创建多工程项目;2、创建编写的动态库程序;3、集成使用第三方或自己编写的动态库;4、对qmake和.pro文件有初步的认识。下面开始吧!多工程项目应用程序在向多进程多动态库方向发展。多工程项目听着很高大上,其实和创建正常的单进程项目一样的简单。区别仅在于创建工程类型的选择和重复创建工程的次数不同。在Qt下创建多工程的步骤如下:...原创 2019-08-15 16:21:45 · 5637 阅读 · 0 评论 -
Qt下实现序列化与反序列化
简述本文介绍作者在Qt工程中如何将流数据编程结构体对象,把结构体数据编程流数据的实现。代码量不大,非常简洁。代码之路写了一个工具类MyDatastream,使用时需要实例化对象,调用相应的序列化或反序列化函数即可,读者可以根据自己定制的结构体自行扩展。例子中的结构体如下:struct UserInfo{ unsigned char id[20]; int idint; uns...原创 2018-12-18 14:22:31 · 9507 阅读 · 4 评论 -
Qt下实现JSON格式的转换
简述JSON格式一种轻量级的数据交换格式,跨平台,兼容性高,具有良好的可读性和快速编写的特性。下面来实现JSON与一般数据的相互转换。主要使用Json对象类QJsonObject和Json数组类QJsonArray生成节点,使用QJsonDocument生成最终json格式数据。代码之路json格式如下:示例:{ "num": "300", "type": 1, "原创 2018-12-12 09:35:31 · 4747 阅读 · 2 评论 -
深入理解Qt信号槽
简述信号槽机制是观察者模式的一种应用,达到订阅-发布的效果。与之类似的有C#中的委托机制,只是写法有所不同。深入信号槽1. 使用场合信号槽实现的主体是connect函数,常有两种写法(利用SIGNAL、SLOT宏和使用&类名::函数的结构)。需要注意connect除了可以连接信号和槽,还可以连接信号与信号、单个信号与多个槽、多个信号与单个槽。2. 第五个参数connect函数...原创 2018-12-27 17:27:02 · 541 阅读 · 0 评论 -
QtChart实现曲线图表绘制之极坐标系
简述QtChart绘制极坐标图表数据和直角坐标没有太大区别,还是这四个步骤:实例化图表。直角坐标使用QChart,极坐标是使用QPolarChart;实例化坐标轴。依然是使用QValueAxis类;实例化画布。可以使用QChartView类或QGraphicsView类;实例化曲线。折线使用QLineSeries类,曲线使用QSplineSeries类一个简单的极坐标图表如下所示:...原创 2018-11-23 16:42:48 · 9485 阅读 · 17 评论 -
Qt下读写XML格式文件(使用QDomDocument类)
简述代码之路详细分析结束语原创 2018-11-22 14:41:46 · 4109 阅读 · 1 评论 -
Qt下实现支持多线程的单例模式
代码介绍实现单例模式的方式很多,代码更多。本文中的单例模式实现代码是本人一直在工程项目中使用的,拿出和大家交流分享。采用双检索的方式,支持多线程,集成析构类,杜绝内存泄漏,稳定性好。使用C++/Qt的朋友们可以了解一下。不再废话,直接上代码。代码之路头文件makelog.h#include &lt;QMutex&gt;#include &lt;QObject&gt;class Mak...原创 2018-11-19 22:06:46 · 4543 阅读 · 4 评论 -
QtChart实现曲线图表绘制之直角坐标系(支持曲线消隐、数据点突出、数据驱动刷新、鼠标进入显示数值)
简述Qt下绘制曲线图表的方法选择很多,下面我将介绍如何使用QtCharts绘制优雅图表。本文的Demo支持点击Mark图标消隐曲线;数据点的突出显示;鼠标进入提示数值;数据驱动刷新显示;图表自动缩放,可移植性比较好。需要说明Demo的编码环境是Qt Creator 5.8,使用Create5.2-5.6版本的用户,网上下载编译安装QtCharts库即可,5.7版本之后只需在.PRO文件中加入...原创 2018-11-23 15:49:35 · 9102 阅读 · 7 评论 -
使用QTableWidget绘制的表格
简述QTableWidget是qt自带的表格控件,可以方便的绘制表格。实现效果如下所示:代码之路头文件包含声明private: QTableWidget* m_tableWidget; QLabel* m_label; QVBoxLayout* m_vlayout; //界面布局源文件的表格初始化void Page::initWidget(){ //标题 m_label ...原创 2018-11-26 09:36:09 · 3300 阅读 · 0 评论 -
Qt下实现简单工厂设计模式
简述简单工厂设计模式是一种基础简单而常用的设计模式,对理解封装、继承和多态特性有非常大的帮助。下面就来在Qt下实现简单工厂模式。代码之路实现简单工厂至少需要四个类。其中最主要的两个类是工厂类和一个基类,另外的类都是这个基类的继承类。下面的例子中工厂类是factory,基类是BasicClass,两个继承类分别是ClassA和ClassB。基类BasicClass的实现如下//basicc...原创 2018-11-30 09:50:16 · 4114 阅读 · 3 评论 -
Qt下实现多线程的串口通信
简述Qt下无论是RS232、RS422、RS485的串口通信都可以使用统一的编码实现。本文把每路串口的通信各放在一个线程中,使用movetoThread的方式实现。代码之路用SerialPort类实现串口功能,Widget类调用串口。serialport.h如下#include &amp;amp;lt;QObject&amp;amp;gt;#include &amp;amp;lt;QSerialPort&amp;amp;gt;#i原创 2018-12-07 09:22:57 · 27495 阅读 · 44 评论 -
Qt程序显示控制台调试信息
简述QT窗体程序的调试信息无法直接看到,通过一定的方法可以把qDebug、cout出来的信息在单独的控制台界面显示出来。显示的效果如下:背后是控制台界面,可以显示调试信息;前面是窗体程序。实现方法1、在pro文件中加入一句 CONFIG +=console2、qDebug()的输出信息可以直接在console界面显示了;若想采用cout的方式输出显示,可以有两种方式。//方式一 #i...原创 2018-12-10 09:49:54 · 7567 阅读 · 0 评论 -
QLineEdit提高用户体验的方法(密码隐藏、背景提示文字、显示可输入字符的范围)
1. 简述QLineEdit即单行文本编辑器,是Qt下常用的人机交互控件,用来接收用户输入的信息。QLineEdit并不像表面那么简单,下面介绍如何在QlineEdit下实现密码自动隐藏、背景提示文字,以及控制输入字符的范围。效果图如下:2. 代码之路2.1 密码隐藏密码隐藏就是用户在输入密码等信息时,输入控件的信息自动隐藏,而显示特殊字符来标识显示输入文字的个数。密码隐藏有2种实...原创 2018-11-20 20:18:28 · 5369 阅读 · 2 评论