Qt
文章平均质量分 84
介绍Qt在各类场景中应用的例子。
丁劲犇
五香面蚕豆,麻酱豆腐卤;戗刀磨剪子,钢筋锅换底。修----理伞,有乌龟壳王巴盖拿来卖,甜--米酒----来碗撒汤,尅个烧饼,一两碗友谊巷的豆腐脑,三四个相山庙的夜归人。岁月催银鬓,光阴染发梢,濉河斜见柳,秋雨且潇潇。抱病婉谢红尘宴,遮颜入市觅佳肴。曲终席尽人未散,把酒对月话故交。
展开
-
freeCAD - Qt开发的工业设计软件
关于后续机电专业的教学,昨天校里开了个会,认为应该把工业软件的二次开发作为计算机教学的重要部分。提到本科机械专业的CAD教学,学校一直用的AutoCAD。有老师介绍了国内CAD的研究情况,由于没有接触过这个行业,我也听不太明白。比较有印象的是,合肥工业大学的博士介绍了freeCAD, 还是挺感慨的。对开源的CAD软件,一直没有关注过。看到现场演示,虽有心理准备还是很吃惊。这种工业级别的软件,让我们来研究如何进行教学和二次开发,一点基础也没有。虽然源码可以从https://github.com/Free原创 2021-08-25 15:08:24 · 2462 阅读 · 6 评论 -
OpenStreetMap数据Qt5分析实战(基于2020数据)
openstreetmap是一种完全开放的地理信息系统,数据由个人、公司免费捐赠、维护。在这个博客的前文中,我们对2019年的城市排名进行了统计。OpenStreetMap最有价值的是数据本身——使用Qt5分析openstreetmap数据库(样本为2020-01导入全球数据),获得城市科技指数这个自定义指标。openSteetMap详细知识、数据、虚拟机见:http://www.golden......原创 2020-05-05 21:52:08 · 2578 阅读 · 1 评论 -
QUdpSocket 丢包测试与解决
Qt的信号与槽是很好的去耦合机质,但在实际使用中,要特别注意它的性能问题。信号与槽不适合非常密集的触发,切记越靠近动态语言的东西(典型的是Qt的元对象系统 meta-object)性能肯定越差。本次记录的测试,即在生产环境遇到的典型案例。含有煤层断面、地下水的回波是勘探中重要的传感器数据。一般由多个传感器汇聚到计算终端(上位机)上,进行模型解算。以前一直在上位机上采用TCP Server, 板卡.........原创 2020-04-19 21:46:03 · 7495 阅读 · 2 评论 -
Qt 三种实时时频控件的简易方案
Qt尽管非常强大,但对时频分析的控件支持不是很好。以前主要靠Qwt的Spectrogram来做,但眼瞅着Qt Charts 开源后,Qwt的更新越来越少,真的怕那天它凉凉了。Qt Charts 美工要比Qwt更加摩登,可是显然背后的行业背景不是信号处理,其距离数据分析更进一步(股票啦、人口啦等等),支持二维时频不是很好。经过一段时间尝试,找到了至少三种办法,这里做一个记录。1 使用 Qt Dat......原创 2020-01-26 17:14:44 · 3764 阅读 · 12 评论 -
一种基于Qt的可伸缩的全异步C/S架构服务器实现(四)数据库的多线程操作
四、数据库的多线程操作在多线程服务中,数据库是原创 2014-05-30 21:49:03 · 5901 阅读 · 3 评论 -
一种基于Qt的可伸缩的全异步C/S架构服务器实现(一) 综述
本文向大家介绍一种基于Qt的伸缩TCP服务实现。该实现针对C/S客户端-服务集群应用需求而搭建。连接监听、数据传输、数据处理均在独立的线程池中进行,根据特定任务不同,可安排负责监听、传输、处理的线程数目,从而在高传输负荷、高计算符合上达成取舍。数据处理采用流水线结构,以避免少量客户的密集计算请求影响其他客户端的处理。本文对应的代码符合LGPL协议,可直接从Github签出。https://github.com/goldenhawking/zpserver...原创 2014-05-16 18:33:18 · 20476 阅读 · 21 评论 -
一种基于Qt的可伸缩的全异步C/S架构服务器实现(六) 整合各个模块实现功能
在前面的章节中,介绍了网络传输、任务线程池、数据库和集群四个主要功能模块。到现在为止,这些模块都还只是一种资源,没有产生实际的运行效果。对一个具备真实功能的应用来说,需要有一个整合的过程。整合方法很多,本例里以典型的客户 -客户通信来举例说明。在最上层,有一个本服务器进程的管理者,称作st_client_table,用于封装所有的服务功能。这个类在每个服务器进程中仅有一个实例。它主要的工作有: (1) 提供一个盛放、管理各个客户端节点类(st_clientNodeAppLayer实例)、各个集群服务器原创 2014-07-06 18:40:01 · 4999 阅读 · 2 评论 -
Qt 插件综合编程-基于插件的OpenStreetMap瓦片查看器客户端(0)-引子
OpenStreetMap一般是使用Web服务发布瓦片和矢量数据的。本系列博文主要演示如何使用Qt 搭建一个简单的OpenStreetMap瓦片客户端,实现以下功能:1、OpenStreetMap 服务器瓦片的自动下载与本地缓存。2、基于Qt插件的接口开发技术,实现高度可扩展的图层。提供两个图层插件范例。第一个插件演示了使用底层QPainter实现绘图、量测功能;第二个插件演示了使用QGraphicsScene系列模型-视图架构在可变比例尺地图上进行静态、动态标注的技术。3、基于事件、呼叫的图层原创 2016-01-16 22:57:36 · 4151 阅读 · 1 评论 -
Qt 插件综合编程-基于插件的OpenStreetMap瓦片查看器客户端(1)-墨卡托投影与坐标控制
本文接着上一篇文章,开始介绍如何把当前需要显示的视窗与OpenStreetMap地图联系起来。引入了几个坐标系,介绍了他们之间的换算关系。原创 2016-01-18 21:26:08 · 5560 阅读 · 6 评论 -
Qt 插件综合编程-基于插件的OpenStreetMap瓦片查看器客户端(2)架构设计
(相关的代码可以从https://github.com/goldenhawking/mercator.qtviewer.git直接克隆) 本文的前序章节介绍了坐标系的基础知识。在这一章,我们将进行架构设计。架构是一个软件生命体的骨骼,为了实现灵活的功能扩展,首先要引入插件机制。 鉴于 Qt 框架本身提供了良好的面相对象插件接口开发能力,不妨就利用这个机制来实现我们的意图。...原创 2016-01-22 22:55:01 · 3051 阅读 · 2 评论 -
Qt 插件综合编程-基于插件的OpenStreetMap瓦片查看器客户端(3) 插件管理机制
本篇主要介绍了基于插件的OpenStreetMap瓦片查看器客户端的插件管理。首先,在进程创建时,通过初始化插件,确保每个动态链接库中的插件类可为各个独立的视图实例化一一对应的对象。而后,介绍了如何安排插件绘图、为插件送入UI交互消息,以及帮助插件之间、插件与宿主、插件与外部ActiveX宿主之间进行通信。...原创 2016-01-24 14:27:04 · 2314 阅读 · 0 评论 -
Qt 插件综合编程-基于插件的OpenStreetMap瓦片查看器客户端(4) 插件绘图
(相关的代码可以从https://github.com/goldenhawking/mercator.qtviewer.git直接克隆) 我们在前面的叙述中,介绍了插件的运作管理机制。在本章,将介绍插件具体实现过程中,绘图、交互的要点。 1、经度边界处理 地球是一个圆球,从格林威治皇家天文台所在的本初子午线开始,向西为负,向东为正,计量经度。到了太平洋上日期变更线附...原创 2016-01-25 13:15:33 · 1959 阅读 · 0 评论 -
一种基于Qt的可伸缩的全异步C/S架构服务器实现(三) 流水线结构线程池设计
为了无阻塞地实现并发通信及处理,设计了一种流水线线程池模式。流水线结构保证了各个客户工作在大粒度上并行化,线程池技术保证了处理器资源的最大利用,可以显著提高系统的吞吐能力。另一个附加好处,是可以让VIP获得高级优先级。...原创 2014-05-18 10:40:56 · 8540 阅读 · 5 评论 -
一种基于Qt的可伸缩的全异步C/S架构服务器实现(二) 网络传输
二、网络传输模块模块对应代码命名空间 (namespace ZPNetwork)模块对应代码存储文件夹 (\ZoomPipeline_FuncSvr\network)2.1 模块结构网络传输模块负责管理监听器,并根据各个传输线程目前的负荷,把新申请接入的客户套接字描述符引导到最空闲的传输线程中执行“接受连接(Accept)”操作。该模块由如下几个类组成。...原创 2014-05-17 21:43:28 · 13958 阅读 · 10 评论 -
QT 线程池 + TCP 小试(一)线程池的简单实现
*免分资源链接点击打开链接http://download.csdn.net/detail/goldenhawking/4492378 很久以前做过ACE + MFC/QT 的中轻量级线程池应用,大概就是利用线程池执行客户机上的运算需求,将结果返回。ACE是跨平台重量级的通信中间件,与常见的应用程序框架需要精心契合,才能不出问题。最近想到既然QT框架本身就已经具有各类功能,何不玩一玩呢...原创 2012-08-11 13:13:10 · 16238 阅读 · 21 评论 -
QT 线程池 + TCP 小试(二)实现通信功能
*免分资源链接点击打开链接http://download.csdn.net/detail/goldenhawking/4492378 有了线程池,我们下一步就利用 QTcpServer 搭建一个服务器,接受客户端的连接,并把数据发送到线程池上。由于 QTcpServer 资料太多了,这里不在赘述。唯一值得注意的是,当客户端退出时,如果线程池队列中还有该客户的信息,这个信息还会被处...原创 2012-08-11 14:25:00 · 8419 阅读 · 12 评论 -
QT 线程池 + TCP 小试(三)实现最终功能
*免分资源链接点击打开链接http://download.csdn.net/detail/goldenhawking/4492378 有了TCP、线程池,我们就可以把他们连接起来。使用最简单的 QMainWindow吧,设计个UI,而后,创建我们的线程池、Service,并把TcpService 的数据接收信号与线程池的数据处理信号连接起来。 为了模拟处理任务,我们...原创 2012-08-11 14:41:48 · 8739 阅读 · 14 评论 -
一步步DIY: OSM-Web服务器(六) C/S架构客户端开发中的细节问题
虽然Ajax的Web应用功能强大,但是,很多时候还是需要 C/S模式的客户端程序。最为典型的应用是为现有产品添加新的OSM地图支持(比如替换掉MapX)。很多现有GIS应用都是Native C++的。这些CLient 与网页最大的不同,就是需要即时以及复杂的交互。以OSM为底图,其上需要进行复杂的科学计算,呈现一些网页不容易表现的功能。因此,在NATIVE C++上做一个地图控件是最合适的。...原创 2012-09-15 14:43:44 · 5996 阅读 · 5 评论 -
一步步DIY: OSM-Web服务器(七) 利用 Google WebService 批量下载遥感瓦片数据
(-:写 http://blog.csdn.net/goldenhawking/article/details/8005564 前面六篇,是集中精力写的,其实,整个流程顺利走过来,花了笔者两个月的时间哦!因为无聊的网速、不给力的硬盘,以及停电,几乎到了恨不得砸机器的地步啦!~~ 走到现在,我们有了B/S C/S两种架构的地图服务,可是,总觉得还缺了什么——对了,只有矢量怎么行?!我们...原创 2012-09-21 23:25:47 · 5960 阅读 · 2 评论 -
迁移 Qt4 至 Qt5 的几个主要环节
Qt5推出一段时间了,经过了试用,虽然还存在一些问题,比如Designer 缺少 WebView 和 ActiveQt 的UI工具,此外 WebKit 的 Release 版本似乎和Visual-Studio 2012 Express 编译器不太吃劲,老是报运行时错误——好在目前用到的模块都测试过了。1,修改路径系统。Qt4 的 QtGUI下很多类被独立到widgets模块里了,为了提高兼容性...原创 2013-01-12 22:55:17 · 8715 阅读 · 2 评论 -
Qt 多线程与数据库操作需要注意的几点问题
Qt的数据库操作自成一派,相对于复杂的 ADO \ODBC\DAO\OLEDB 等传统 C++ 访问数据库的方法,还是很先进的,充分体现了 OO 的理念。对数据库的封装,想法是很有意思的。设计者把进程内的数据库连接作为一种资源,每个连接有一个唯一的名字,可以通过全局的 addDatabase, removeDatabase, cloneDatabase 来增删,想用的时候,直接用全局的 database 来获取。这样的好处,是大大节省了开发者的负担。一个线程创建的数据库对象(如 addDatabase 的返原创 2013-08-31 23:50:26 · 17464 阅读 · 9 评论 -
一种基于Qt的可伸缩的全异步C/S架构服务器实现(五) 单层无中心集群
对40万用户规模以内的服务器应用,使用星形的无中心连接是较为简便的实现方式。分布在各个物理服务器上的服务进程共同工作,每个进程承担若干连接。为了实现这个功能,需要解决几个关键问题。跨服务器传输通道、流式解译,以及分布式的客户端哈希(留在下一章)。...原创 2014-06-07 23:34:24 · 5805 阅读 · 3 评论 -
Qt 插件综合编程-基于插件的OpenStreetMap瓦片查看器客户端(5) 小结
经过不断试用与修改,这个查看器最终还是完成了设计、实现。查看器,顾名思义,没有编辑功能:说的白一点,只是一个以OpenStreetMap为底图的显示装置罢了。和专业GIS相比,这款基于插件的OpenStreetMap瓦片查看器客户端显得单薄。和消费类GIS(如面向浏览器的地图API)相比,它是本地的,似乎和Native应用更加合拍。 其实一直以来想利用业余时间做这样一个......原创 2016-03-11 23:34:27 · 4573 阅读 · 4 评论 -
Qt5 UI信号、槽自动连接的控件重名大坑
对Qt5稍有熟悉的童鞋都知道信号、槽的自动连接机制。该机制使得qt designer 设计的UI中包含的控件,可以不通过显式connect,直接和cpp中的相应槽相关联。然而,这种机制存在一个隐患,即控件重名,需要引起重视...原创 2016-07-09 11:40:08 · 3896 阅读 · 3 评论 -
Qt 数据库操作与多语言支持的解决途径探讨
最近帮朋友使用Qt开发了一个毕业设计,题目要求实现繁简切换。对UI的元素进行国际化,大致牵扯到以下几个部分。 UI元素:如按钮、各种控件。 代码中的字符串:比如一些弹出消息等。 数据库内容:包括字段名、字段值。 这三个部分由易到难。数据库内容动态翻译,成为最难的一点,至今解决的很笨,很不满意。...原创 2017-01-22 21:39:31 · 1999 阅读 · 3 评论 -
为C++/Qt加入轻便性能收集器
在做比较耗费计算资源或者存储资源的多线程程序时,往往需要分析每个环节耗费了多少时间。使用valgrind系列工具,在Linux下可以来做类似的工作,但是我们还是希望在所有平台下,以及最终发行Release版本中(优化开关全开)完成评估。实际上,只要能够有一个工具方便的记录每个关键位置的时刻,即可使用后期分析来计算每一步的成本。1. 预期需求1.1 调用方法按照轻量级、简单的需要,我们要求:......原创 2019-05-15 22:14:16 · 1379 阅读 · 0 评论 -
Qt QML-先进的理念,不确定的未来(读Qt5-Cadaques)
我使用Qt4、5虽然很久了,但对QML的接触与应用仍然停留在复制粘贴的碎片认识中。最近由几个学生讨论QML的问题开始,我也忙里偷闲和他们一起利用下午茶的时间,系统地阅读了Qt官方QML教程《Qt5 Cadaques》。这个书名中的“Cadaques”貌似是地名,查了半天也不知道啥缩写。结果,最后从首页发现,原来它真的只是个地名!狗血乎?Why Cadaques? Because one of ......原创 2019-05-19 23:09:49 · 4312 阅读 · 5 评论 -
Qt5 App的另类模式-VNC与webgl streaming
一直以来都没有测试过Qt5的远程UI功能。这次,稍微测试了一下。1、VNC模式你的App,无论有多复杂,直接使用app.exe -platform vnc:size=1280x800,port=12345,depth=32,mmsize=600x350即可开启服务2、WebGL目前只支持QMLAPP。但是可以在浏览器打开,使用app.exe -platform webgl即......原创 2019-03-16 11:18:23 · 2689 阅读 · 7 评论 -
Taskbus - 基于Qt的跨平台多进程合作框架(二)模块开发举例
我们继续前文,介绍taskBus的模块开发例子。文章目录4. 开发指南4.1 设计功能与撰写描述文件4.2 利用工具代码加快开发进度4.2.1 命令行解释4.2.2 数据收发4.2.3 调试(1)录制(2)回放与调试4.3 数据处理4.3.1 数据缓存建议4.3.2 负荷控制4.4 运行与发布4.4.1 路径策略4.4.2 子工程与嵌套(1) 创建子工程4. 开发指南我们将以fftw为例子,......原创 2018-11-17 20:45:50 · 1724 阅读 · 2 评论 -
Taskbus - 基于Qt的跨平台多进程合作框架(一)基本原理
文章目录1. 什么是Taskbus1. 什么是TaskbusTaskbus 是一种面向非专业开发者的跨平台多进程合作框架,具有进程切割、语言无关、编译器无关、架构无关四个特点。非专业开发者是一个泛泛的概念,可以理解为没有受过专业化的软件工程化训练的开发者。诸如需要频繁自行开发小工具进行算法验证的高校教研团队,以及深入某一领域(化工、机械、通信、电子等)进行数据分析,需要长期从事非消费类工具软......原创 2018-11-17 20:32:35 · 3611 阅读 · 3 评论 -
Taskbus - 基于Qt的跨平台多进程合作框架(三)主要技术
在上一篇文章中,我们介绍了taskBus的原理。最近这段时间,主框架仍旧在密集的迭代中。通过在Linux及win32下,实现内存监视,我们已经能够实时监视各个模块的资源使用。文章目录1. 强大的QProcess +隐式共享2. QJson与Qt容器1. 强大的QProcess +隐式共享taskBus 能够顺利吞吐数据的关键因素是强大的 QProcess 。我们仔细查看该类的文档,可以发现......原创 2018-11-23 22:51:13 · 1611 阅读 · 3 评论 -
小笔记-C++快速分解字符串
以前,针对分解字符串的需求,总是用Qt,最近发现C++一样的。特此记录。C++版#include <iostream>#include <vector>#include <list>#include <algorithm>#include <regex>using namespace std;int main()......原创 2018-06-27 18:46:01 · 759 阅读 · 0 评论 -
QWebEngine-基于chromium内核的浏览器框架
近期,因为同学所托,稍微涉足了一下并不熟悉的Web浏览器这一块。由于之前用过Qt Webkit,便准备动手试试看,能不能在网页中实现自动填表。自动填表的实现方法挺多,有基于JS的,基于IE OLE的,还有直接模拟鼠标、键盘操作的。论实现的简单程度,还是JS比较方便。之前QtWebkit中即可直接调用JS脚本,结果发现,Qt不知道什么时候,就把QWebKit从官方仓库中移出了。给的解释是“需要一......原创 2018-06-08 13:43:21 · 38889 阅读 · 7 评论 -
使用openCV+Qt+fcgi 为OpenStreetMap瓦片添加热力图图层
在搭建如OpenStreetMap等瓦片服务器的过程中,我们会关心当前服务器上哪些瓦片已经存在(被渲染了)、哪些瓦片被访问量大,哪些少。 统计瓦片的历史记录,可以直接扫描缓存,或者通过数据库来完成。如果能够把统计数据直接叠加到地图上显示,就更棒了!今天,就来动手制作一个webService,用来生成每个瓦片的访问情况图。接口设计我们希望,这个服务本身可以作为一个图层与现有的OpenS......原创 2018-05-26 20:15:47 · 4842 阅读 · 5 评论 -
一款有意思的 Qt 飞行仪表控件
最近在网上偶然发现一款Qt飞行仪表板控件,真的很酷哦! 是一款开源软件,地址 https://sourceforge.net/projects/qfi/, 直接编译运行: 美工还是不错的! 控件操作非常简单:void MainWindow::timerEvent( QTimerEvent *event ){ ////////////////////////////////......原创 2017-12-15 22:48:43 · 17335 阅读 · 51 评论 -
Qt5信号与槽C++11风格连接简介
最近在论坛上看到了这个方面的问题,详见这里。 随后浅浅地学习了一下子,看到了Qt官方论坛上给出的说明,觉得C++11的functional连接方法还是比Qt4既有的宏连接方法有很大不同。 传统的Qt4 Signal-Slot宏连接兼容性好,但是没有编译时检查,往往会由于笔误,产生预料之外的效果。现在,有了C++11 functional的支持,可以借助编译器进行严格的类型检查,明显是有利于调试了。...原创 2017-12-10 19:24:39 · 3299 阅读 · 3 评论 -
Qt数据可视化:Qt Data Visualization 与 Qt Charts 简介
Qt 最近开放了不少商业许可的模块,吸纳Qt Data Visualization 与 Qt Charts 模块无疑是为了在数据可视化方面弥补框架的不足。Qt ChartsQt Charts 在Qt4时代就有了,不过一直以来是商业许可的。从5.7.0开始,也纳入了有限开放许可证。...原创 2017-11-19 21:35:16 · 28235 阅读 · 12 评论 -
一种不太完善的OpenStreetMap字典汉化方法
根据世界地名词典,对OpenStreetMap进行汉化,使用了下面的代码。不太完善,这里仅贴出来。 地名字典在我的资源世界地名大词典下载。原创 2017-08-14 09:20:58 · 1842 阅读 · 0 评论 -
迁移到MSYS2 与 Qt 工具链注意的几个事情
MSYS64 是很不错的编译环境,但是,在应对 Qt -ActiveQt 工程方面,存在参数转译符为"/"导致的无法生成idl接口文件问题,且缺少 windows SDK midl.exe的支持。本文详细介绍了如何解决这些问题,使得MSYS64环境下,可以顺利的编译出 activeX 控件。...原创 2016-04-16 18:14:10 · 4425 阅读 · 3 评论 -
用C++Qt 与libfcgi快速开发后台 WebService
在与APP接口的后台WebService开发方面,估计很少有人直接使用C接口的libfcgi-dev进行开发的了。但是,这不代表此方法是不可行的。在强大的Qt库的支持下,原来使用C++开发webService也是非常方便的。这里我们以获取OpenStreetMap数据库中的地理信息为例子,看看现代C++的威力。 项目地址: https://code.csdn.net/goldenhawking/...原创 2017-04-08 15:41:15 · 9118 阅读 · 3 评论