Qt基础
文章平均质量分 69
Qt 开发技术积累
qq_21291397
这个作者很懒,什么都没留下…
展开
-
Qt操作Office的一个实例--口算题生成器制作。
文章目录Qt操作Office的一个实例--口算题生成器制作。1、#include Qt操作Office的一个实例–口算题生成器制作。学校里经常会要求口算达标。如果手写口算题效率太慢,何不用Qt做一个口算生成器呢?虽然Qt自带文本编辑功能,不过这次还是想尝试操作COM对象来实现。于是从网上下载一个文档QWord.cpp 来了解Qt操作COM对象的方法。粗略分析了QWord.cpp 的文档,基本了解如下:1、#include <ActiveQt/QAxObject>要操作office需要原创 2021-01-06 10:01:21 · 911 阅读 · 0 评论 -
Qt 关于定时器实用的总结
文章目录Qt 关于定时器实用的总结第一种方案:startTimer + QTimerEvent第二种方案:QTimer类+信号和槽定时器与线程Qt 关于定时器实用的总结在实际编程中常常会使用到定时器,现在就将定时器的用法作个总结。第一种方案:startTimer + QTimerEvent对于一个QObject的子类,只需要使用int QObject::startTimer(int interval) 函数来开启一个定时器。当定时器溢出时可以在timerEvent() 函数中进行相关操作。例如原创 2020-11-27 10:50:18 · 625 阅读 · 0 评论 -
Qt 实现数据协议控制--组帧、组包、解析帧、解析包
数据传输中的组帧和组包一、数据帧,数据包的概念数据帧组包二、 程序实现:2.1、frame(帧)类的实现:2.2、Pack(包)类的实现:三、测试一、数据帧,数据包的概念数据帧数据传输往往都有一定的协议,通过CRC校验来验证数据的可靠性。数据帧包含三部分,帧头、数据部分、帧尾。其中帧头和帧尾包含一些必要的控制信息,比如同步信息,地址信息、差错控制信息等等。组包多个数据帧可以捆在一起,添加包头信息,就可以组包。组包可以使得多帧的数据同时发送,提高通信的效率。数据的帧包可以提高数据传输的可靠性。下原创 2020-11-12 14:08:06 · 14361 阅读 · 3 评论 -
关于QMap的几点总结思考
关于QMap的几点总结思考题记:前段时间集中精力写了数据的分拣算法,用到了容器QMap和QMultiMap。回头再来回去该算法的时候,又觉得当时好像不是自己写的一样,于是有必要将QMap类来总结一下。首先来了解下C++中STL中的map:map是STL的一个关联容器,它提供一对一的hash。特点:第一个可以称为关键字(key),每个关键字只能在map中出现一次;第二个可能称为该关键字的值(value);map以模板(泛型)方式实现,可以存储任意类型的数据,包括使用者自定义的数据类型。M原创 2020-11-05 12:51:18 · 4550 阅读 · 0 评论 -
QMap详解
QMap详解QMap是Qt的一个模板类,它是基于红黑树算法的一套字典。 QMap<Key,T>是Qt容器类型的一种,它通过(Key, value)存储一对值,并通过Key可以查找与之关联的value的值。 QMap和 QHash是很相似的,不同的地方是:QHash的查找速度比QMap要快很多。在对QHash进行迭代时,这些项是任意排序的。在QMap中,项总是按键排序。QHash的关键类型必须提供运算符==()和全局QHash(key)函数。QMap的关键类型必须提供操作符<(原创 2020-11-05 10:00:34 · 42542 阅读 · 0 评论 -
Qt基于QGraphicsObject自定义图元并实现简单的动画
文章目录Qt基于QGraphicsObject自定义图元并实现简单的动画举例;Qt基于QGraphicsObject自定义图元并实现简单的动画Qt 图形的绘制 可以是QPainter方法直接绘制,另一种方法就是通过继承QGraphicsItem类来定制自己的图元类,这样就可以根据自己的需求来制作它的形状、颜色、属性以及交互等。但是这样的图元会存在一个缺点,那就是不能使用Qt的信号/槽机制,也不能使用Qt属性系统,也不能使用Qt的动画框架实现动画。在Qt已经考虑到了这些问题,QGraphicsObjec原创 2020-11-02 15:32:09 · 3135 阅读 · 0 评论 -
实现Qt日志功能并输出到文件
文章目录实现Qt日志功能并输出到文件一、基本分类:二、如何截获这些信息三、将qDebug()\qWarning()\qCritical()\qFatal() 信息输出到指定文件中实现Qt日志功能并输出到文件一、基本分类:qDebug : 调试信息提示qWarning: 一般的警告提示qCritical: 严重错误提示二、如何截获这些信息Qt提供了qInstallMsgHandler 方法用来定制消息发生后如何来处理。qInstallMsgHandler 是一个回调函数,主要是由qDebug、原创 2020-11-02 09:18:12 · 4505 阅读 · 1 评论 -
Qt中qDebug()技巧初探
文章目录Qt中qDebug()技巧初探一、发布时屏蔽debug 消息二、debug 程序定位三、Qt利用qDebug输出信息到文件Qt中qDebug()技巧初探一、发布时屏蔽debug 消息发布程序时,去掉debug打印,可以加快程序执行速度,减小程序体积。然而手动注释很麻烦,在pro文件里加上一行预定义宏即可。DEFINES QT_NO_DEBUG_OUTPUT二、debug 程序定位例如:qDebug() << FILE << LINE << messa原创 2020-10-14 09:52:04 · 1163 阅读 · 0 评论 -
QPushButton 点击信号分析
QPushButton 点击信号分析QPushButton有三个很重要的信号跟点击有关pressedclickedtoggled表面上看,pressed和clicked都会在点击按钮时触发,它们有什么区别呢?toggled好像有时候触发,有时候不触发,到底怎么回事呢?下面就一起聊一下这三个信号首先,这三个信号都是从QAbstractButton继承来的,也就是说,下面情况对QAbstractButton的所有子类都适用,先来看第一个问题pressed和clicked,可以编写一段代码来测试一转载 2020-09-08 11:03:41 · 308 阅读 · 0 评论 -
Qt 清空QPixMap
Qt 清空QPixMap1、如果为使用场景视图框架:清空这么写就好了,默认构造就是空的QPixmap clearPix = QPixmap();pix = clearPix;update();2、如果使用了场景视图框架。那就用QGraphicsScene::removeItem(QGraphicsItem *item);例如:预先定义变量:QGraphicsPixmapItem *mapitem ;加载图片if(image->load(fileName)) {原创 2020-09-03 13:51:20 · 5225 阅读 · 0 评论 -
Elastic Nodes Example 翻译及学习整理
文章目录Elastic Nodes Example 翻译及学习整理题记:简介:Node Class DefinitionEdge Class DefinitionGraphWidget Class DefinitionThe main() FunctionElastic Nodes Example 翻译及学习整理题记:因为最近的一个项目需要实现图像交互,好在Qt有现成的一些示例。示例是全英文的,还是翻译整理一遍,这样印象会更深刻些。简介:该示例演示了如何实现在场景中的图形交互。具体有一下几个方原创 2020-08-28 15:02:43 · 1099 阅读 · 0 评论 -
Qt 2D绘图功能简单总结
文章目录Qt 2D绘图功能简单总结Qt 2D绘图功能简单总结Qt 的绘图功能非常强大,它可以绘制一切想要的图形,从最简单的一条直线到其他任何复杂的图形,还可以用来绘制文本和图片。Qt的绘图系统中由QPainter来完成具体的绘制操作。该类提供了大量高度优化的函数来完成GUI编程所需要的大部分绘制工作。2D 绘图有两个思路:1、不适用Qt的视图框架。在一个部件重绘事件paintEvent()中绘制,首先创建QPainter对象,再进行图形的绘制,最后程序结束自动销毁QPaint对象。例原创 2020-08-27 09:19:38 · 506 阅读 · 0 评论 -
Qt 运用鼠标绘制多边形
文章目录Qt 鼠标绘制多边形技术要点:Qt 鼠标绘制多边形分析: Qt鼠标绘图,就是要捕获鼠标事件,将捕获到的坐标点传递给场景,然后场景中就可以添加响应的2D图形了。技术要点: 1、了解Qt的视图框架 2、子类化QGraphicsView,实现鼠标事件的捕获 3、运用addPolygon()函数添加多边形实现过程:1、创建工程,改写MainWindows 函数如下MainWindow::MainWindow(QWidget *parent) : QMain原创 2020-08-25 11:11:13 · 3347 阅读 · 4 评论 -
QGraphicsScene 的简单理解--关于手册的简要翻译
文章目录QGraphicsScene 的简单理解--关于手册的简要翻译简介:一般操作:关于scene's bounding rect:the location of items.scene's selection事件处理与事件转播QGraphicsScene 的简单理解–关于手册的简要翻译简介:QGraphicsScene 类提供了一个管理2D 图形一个操作平台。打个比方,QGraphicsScene 类类似一个舞台,各类的2D图形就是舞台中呈现的各个角色或者道具。QGraphicsScene 类原创 2020-08-24 13:56:03 · 1325 阅读 · 0 评论 -
qt 在点击菜单下的动作之后获取该菜单的名称
文章目录qt 在点击菜单下的动作之后获取该菜单的名称qt 在点击菜单下的动作之后获取该菜单的名称问题:QMenu 类下有4个信号:void aboutToHide()void aboutToShow()void hovered(QAction *action)void triggered(QAction *action)关联信号 triggered(QAction *action) 后,要查询 该action 对应的菜单,应该如何操作呢?解决过程:1、首先关联信号和槽函数 c原创 2020-08-19 16:03:06 · 3251 阅读 · 7 评论 -
QT QTreeWidget 行切换时改变背景色
文章目录QT QTreeWidget 选中某行并设置背景色高亮1、关联信号槽。2、写信号槽函数:QT QTreeWidget 选中某行并设置背景色高亮1、关联信号槽。当QtreeWidget 的选中状态发生变化时,会触发信号urrentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *),可关联该信号进行处理。 connect(this,SIGNAL( currentItemChanged(QTreeWidgetItem *, QTreeWidgetI原创 2020-08-18 16:34:02 · 1738 阅读 · 0 评论 -
QTreeWidgetItem 类的翻译
文章目录QTreeWidgetItem 类的翻译简介子类化QTreeWidgetItem1、构造函数2、其他成员函数3、成员函数的简单使用QTreeWidgetItem 类的翻译简介QTreeWidgetItem 和QTreeWidget 一同是为了实现树状数据类型。TreeWidget的每个数据项(items)有行和列决定。每个数据项除了包含数据外,还可以包含text lable 或者icon。数据项(items)建构的时候,指定的父项可以是QTreeWidget (for top-level原创 2020-08-03 15:55:28 · 1141 阅读 · 0 评论 -
Qt 解决MySQL 中文乱码问题
文章目录Qt 解决MySQL 中文乱码问题解决此问题的必要前提就是:1、版本要匹配。Qt 解决MySQL 中文乱码问题折腾了一天,整整一天,终于把该问题解决了。现在整理如下:Qt 连接MySQL后,可能会遇到与MySQL交互过程中出现中文乱码的问题。解决此问题的必要前提就是:1、版本要匹配。2、数据库连接正常。3、数据库的编码格式与Qt的编码统一、1、版本要匹配。Qt for windows 的版本,一般都是32 位下载的MySQL版本也必须是32位版本。Qt 的编译器选择也需要是原创 2020-07-30 15:51:40 · 2078 阅读 · 0 评论 -
Qt5.15 连接MySQL数据库的实现策略
文章目录Qt5.15 连接MySQL数据库测试环境:连接测试总结:Qt5.15 连接MySQL数据库Qt5.15 的QSqlDatabase 类中并没有支持MySQL数据库的驱动,需要用户自己添加。这就需要重新编译下mysql.pro测试环境:QT版本:QT 5.15.0MySQL版本:mysql 5.5.55连接重新编译mysql.pro。1、打开Qt自带的mysql.pro文件地址在Qt的安装目录下: “C:\Qt\5.15.0\Src\qtbase\src\plugin原创 2020-07-29 10:32:46 · 1995 阅读 · 1 评论 -
Qt数据库操作(三) -- 使用SQL模型类
文章目录Qt数据库操作(三) -- 使用SQL模型类1、SQL查询模型2、SQL表格模型3、关系表格模型Qt数据库操作(三) – 使用SQL模型类Qt 提供了3个高级的类来访问数据库,分别是QSqlQueryModel、QSqlTable和QSqlRelationalTableModel。此三类都继承自QAbstractableModel 派生来的。使用这些类的好处是很容易地适应其他数据源。1、SQL查询模型QSqlQueryModel 提供了一个基于SQL查询的只读模型。QSqlQuery原创 2020-07-27 15:20:42 · 1107 阅读 · 0 评论 -
Qt 数据库操作(二)
文章目录执行SQL语句1、执行一个查询2、浏览结果集3、插入、更新和删除记录4、事务执行SQL语句1、执行一个查询QSqlQuery类提供了一个接口,用于执行SQL语句和浏览查询的结果集。要执行一个SQL语句,只需要简单地创建一个QSqlQuery 对象,然后调用QSqlQuery::exec()函数即可。例如:QSqlQuery query:query.exec(“select * from student”);在QSqlQuery的构造函数中可以接受一个可选的QSqlDatabase对象原创 2020-07-27 09:44:20 · 564 阅读 · 0 评论 -
Qt 事件系统的解读
文章目录Qt 事件系统题记:1、QEvent 类关系图2、Qt中的事件3、 事件的处理4、事件的传递5 、事件过滤器与事件的发送Qt 事件系统题记:突然想感慨几句话:1、熟悉Qt的框架的确不是一朝一夕的事情。首先要懂得C++的语法规则、其次还需要不断摸索理解Qt的框架。2、概念性的知识建构是是一个逐级递增的过程,这个过程就像打地基一样不断夯实。可能一本工具书,需要翻阅不仅仅是一遍两遍。看十遍的效果和看一遍的效果是不一样的。看五十遍和看十遍的效果更是不一样。3、通过一些小小项目实践来体验编程了乐趣原创 2020-07-24 09:41:03 · 311 阅读 · 0 评论 -
QTextStream 的简单理解
文章目录QTextStream 的简单理解QTextStream类提供了使用QIODevice读写文本的基本功能。还有一种通常的用法就是控制台命令的读写除了QTextStream的构造函数,还要常用的一些方法通常有三种方式来读文本文件Qt提供了几个和iostream相似的全局函数:QTextStream 的简单理解QTextStream类提供了使用QIODevice读写文本的基本功能。QTextStream可以操作QIODevice上,支持QByteArray和QString。如果使用QTextStr原创 2020-07-22 07:19:51 · 7033 阅读 · 0 评论 -
关于 QAbstractItemModel 学习的一点分享
文章目录关于 QAbstractItemModel 学习的一点分享简介:关于QAbstractItemModel类的细节描述:子类化该模型关于 QAbstractItemModel 学习的一点分享简介:Qt的模型、视图框架对处理一些复杂数据结构的可视化非常有用。Qt提供了三种常用的数据模型:QAbstractListModel (表单模型)、QAbstractTableModel (表格模型)、QAbstractItemModel (项目模型)。其中第三种模型最灵活。前两种模型都是继承第三种模型的原创 2020-06-24 16:38:39 · 2741 阅读 · 0 评论 -
关于QVariant 的学习一点分享
关于QVariant 的学习一点分享目录**关于QVariant 的学习一点分享**Variant类的开发手册解读QVariant 类的支持的类型:常用函数:QVariant 变量在类之间的传递:本人就像铁匠铺里的学徒,一点一滴地积累Qt开发的一些技巧。看到一个Demo程序中用到了QVariant 进行传值。就像搞明白它。分析了网上大牛们的介绍,于是,自己也想拙笔写一篇。Variant中文翻译为“变体,转化”。这个数据类型的出现,有什么意义呢?那么还是查阅的Qt官方的开发手册吧!Variant类原创 2020-06-23 11:30:40 · 928 阅读 · 0 评论 -
Qt 图形视图框架中的事件处理和传播
目录名字Qt 图形视图框架中的事件处理和传播要点:Qt 图形视图框架中的事件处理和传播图形视图框架在一些动画类的应用程序上经常会用到。该框架中的事件处理与传播机制也是经常会涉及。程序设计核心在设计,而好的设计,一定是建立在深刻的理解之上。理解Qt的事件处理和传播非常重要。这里《Qt Creator 快速入门 》的第11章有介绍,现在提炼要点如下:要点:1、图形视图框架中的事件传播的顺序是:视图–场景–图形项2、焦点决定事件如何传播:没有焦点,所有的键鼠事件都被丢弃。场景获得焦点,传原创 2020-06-11 11:11:49 · 405 阅读 · 0 评论 -
Qt 视图框架示例 Colliding Mice 的翻译
目录名字Qt 视图框架示例 Colliding Mice 的翻译简介:Mouse Class 定义Mouse Class 定义The Main() 函数Qt 视图框架示例 Colliding Mice 的翻译简介:该示例程序介绍了怎样在Qt的视图框架里创建动画以及冲突检测。视图框架提供了QGraphicsScene class 场景类来管理2D图形对象.一个QGraphicsView widget 来是显示这些图形项,并且支持视图的缩放和旋转。在该示例中, Mouse class 自定义了一原创 2020-06-10 10:27:13 · 801 阅读 · 0 评论 -
Qt 2D painting Demo 的翻译
目录名字Qt 2D painting Demo 的翻译Helper Class 定义Helper Class 的实现Widget Class 定义Widget Class 实现GLWidget Class 定义GLWidget Class 实现Window Class 定义Window Class 实现Qt 2D painting Demo 的翻译2D Painting 示例简介:该示例描述了怎样使用QPainter 和QGLWidget 来显示2D图像。QPainter类是实现2D图形的绘制。原创 2020-06-09 14:57:13 · 405 阅读 · 0 评论 -
Qt Dock Widgets 官方示例的翻译
Qt Dock Widgets 官方示例的翻译Dock Widgets Example 介绍:Dock Widgets 示例程序描述的有两个技术要点:1、如何添加Dock 窗体到应用程序中。2、如何使用Qt的富文本引擎。该示例应用程序描述的是一个简单的处理商业邮件的模板程序。在两个Dock 窗体中分别显示了客户的信息 和 常用语。通过单击Dock中的列表,将自定添加选中的信息添加到邮件模板中。当然,撤销按钮可以撤去邮件模板中错误的或者不需要的信息。一旦邮件完成,可以直接答应或者保存为HTML原创 2020-06-08 13:34:56 · 682 阅读 · 0 评论 -
使用Qt创建XML文档及XML文档的增删改
使用Qt创建XML文档及XML文档的增删改XML文档的操作 :QXml + QFile+QTextStream创建XML的一般步骤:1、添加处理指令及XML说明2、添加元素3、写入文件示例:QDomDocument doc;// 添加处理指令即XML说明QDomProcessingInstruction instruction;instruction = doc.createProcessingInstruction("xml",原创 2020-06-05 09:14:56 · 1498 阅读 · 0 评论 -
Qt 读取XML文档的简单示例
目录名字XML简介Qt 操作XML文档一般方法使用DOM读取XML文档示例代码:读取XML文档XML简介XML(Extensible Markup Language,可扩展标记语言)是一种类似于HTML的标记语言,设计的目的是传输数据,而不是显示数据。XML的标签没有被预定义,用户需要在使用时自定义。XML使用的树形结构更能表现出数据的包含关系。XML是一种文本文件格式,在信息存储和描述领域非常流行。Qt 操作XML文档一般方法Qt提供了QtXML模块来进行XML文档的处理,这里提供了3种解析原创 2020-06-04 16:18:06 · 1677 阅读 · 1 评论 -
Qt WebSocket服务端的简单Demo
WebSocket服务端:QWebSocketServer背景:最近遇到一个项目要开发一个服务,该服务通过websocket 传出数据。于是先从简单的实现开始吧。QWebSocketServer 简单使用介绍:1、Qt对websocket的封装分为服务端和客户端,分别使用QWebSocketServer和QWebSocket。2、QWebSocketServer 和 QTcpServer 都是基于QAbstractSocket模型的。所以可以类似QTcpServer的开发,它们行为相同。使用参照Q原创 2020-05-28 11:26:44 · 4987 阅读 · 0 评论 -
QThreadPool Class的翻译
QThreadPool Class的翻译**QThreadPool 类用来管理QThread集。**QthreadPool 管理和循环调用QThread对象,这样多线程处理中可以减少资源的消耗。每一个Qt应用程序都有一个全局的QThreadPool对象,它可是通过globalInstance()来获取。创建QThreadPool 线程,需要z...原创 2020-05-25 14:20:42 · 191 阅读 · 0 评论 -
Qt多线程示例--并发数据处理
在通信中,往往会遇到这样的情况当接入N个子结点,每个子结点向它的父结点发数据,父节点来并发处理总子结点汇集的数据。对于上述情况,我们经常设计成多线程来并发接收数据,将数据接收后排队存入一个全局变量,再单独开辟一个线程从这个全局变量读取第一个数据,处理完则移除第一个数据。Qt中的链表直接提供了一个takeFirst函数,用while循环读取,在读取的时候加锁,这样的话就不会冲突了。在这里我们设计了一个定时器来模拟子结点产生的数据,开辟一个单独的线程来读取数据。关键代码:#ifndef MAINWI原创 2020-05-14 13:26:48 · 4934 阅读 · 1 评论 -
互斥锁 QMutex Class 的翻译
互斥锁 QMutex Class 的翻译简介互斥锁的存在是为了保证线程间的访问资源的连续性。该资源可以是一个对象(object),数据结构(data structure),或者一段代码( a section of code),并且保证同一时间只能有一个线程来访问。举个列子:int number = 6;void method1(){ number *= 5; numb...原创 2020-04-30 13:02:09 · 224 阅读 · 0 评论 -
Qt 互斥锁 QMutex 的简单应用
Qt 互斥锁 QMutex 的简单应用在多线程解决问题中,经常会碰到多个线程操作同一片资源,有些时候用信号量的方式去处理,但有的时候需要用到互斥锁。互斥锁:说白了就是,资源某个时间只能被一个线程使用。打个比方:家里的微波炉每次只能被一个人使用。Qt中官网有个关于信号量的示例,http://doc.qt.io/qt-5/qtcore-threads-semaphores-example.htm...原创 2020-04-30 10:53:05 · 2331 阅读 · 0 评论 -
Qt 信号量 QSemaphore Class 的翻译
关于 Qt QSemaphore class 的翻译Qt 的 QSemaphore class 提供了一个通用的信号量(可以是单一的,也可以是数量多个的)的使用方法。需要编辑环境添加:Header: #include <QSemaphore>qmake: QT += core公共函数:QSemaphore(int n = 0)~QSemaphore()void acq...原创 2020-04-29 16:25:26 · 216 阅读 · 0 评论 -
Qt 并行计算圆周率示例
Qt 并行计算圆周率示例简介:因为最近的一项项目中要用到并行计算,所以花了两天的时间了解了下Qt的并行计算的功能,顺便也尝试写了一个Demo和大家一起分享。任务如下:1、实现多种方法计算圆周率。(据了解圆周率的计算方法估计有上百种)2、实现普通计算和并行计算的比较。3、计算的循环次数可以设定。4、计算结果可是在界面显示。实现过程:本示例需要解决的难点在于:1、计算时间的获取...原创 2020-04-29 11:55:42 · 3891 阅读 · 3 评论 -
C++中的Lambda表达式详解
C++中的Lambda表达式简介:Lambda表达式(又称Lambda函数,英文原文是Lambda Expression),是C++11的新特性中非常实用的一个。按照cppreference的官方中文解释,构造一个闭包:能在作用域内捕获变量一个的匿名函数对象。一个常见的Lambda表达式的结构如下(省略了mutable、exception、attribute和-> ret):[ ...原创 2020-04-28 11:38:38 · 500 阅读 · 0 评论 -
Qt 并行计算 Concurrent Run的翻译
资料来源:https://doc.qt.io/qt-5/qtconcurrentrun.htmlConcurrent Run的简介:QtConcurrent::run() 是开启单独一个线程来运行。返回值可以通过QFuture API来调取。在单独的线程中运行:QtConcurrent::run();extern void aFunction();QFuture<void>...原创 2020-04-28 08:49:34 · 652 阅读 · 0 评论