- 博客(28)
- 资源 (2)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Qt开发之实现平滑曲线
前言最近找了一份新工作,由于前面从事金融行业,主要负责行情的开发,这边对绘图有些经验,所以同样被安排绘图工作。预研了几个图库,感觉qcustomplot还蛮合适的。性能,交互,还可定制提供了极强的拓展性。回到正题,Qt实现平滑曲线,很简单,就是根据贝塞尔曲线算法计算出点,何为贝塞尔曲线?又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线。一般的矢量图形软件通过它来精确画出曲线,贝兹曲线由线段与节点组成,节点是可拖动的支点,线段像可伸缩的皮筋,我们在绘图工具上看到的钢笔工具就是来做这种矢量曲
2021-03-25 20:25:52
2131
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Qt信号与槽机制原理及优缺点
信号和插槽用于对象之间的通信。信号和槽机制是Qt的核心特性,可能也是与其他框架提供的特性最大不同的部分。Qt的元对象系统使信号和插槽成为可能。作为一个C/C++程序员来说 回调应该属于深入人心的机制了。其他工具包使用回调来实现这种通信。回调函数是一个指向函数的指针,所以如果你想要一个处理函数通知你一些事件,你可以将一个指向另一个函数(回调函数)的指针传递给处理函数。处理函数然后在适当的时候调用回调函数。但回调可能不太直观,而且在确保回调参数的类型正确性方面可能会遇到问题。在Qt中,我们有一个回调技术
2020-12-30 15:40:45
4748
原创 QJSEngine实现QtC++与Javascript混合编程
QJSEngine类提供了一个评估JavaScript代码的环境先来熟悉一些Javascript脚本范例:function uniOnMenuClick(int a){ }function uniOnMouseDown(){ return 1;}QJSEngine 执行脚本内容的函数是QJSValueQJSEngine::evaluate(const QString&program, const QString&fileName= QStri...
2023-06-18 18:06:15
464
原创 Qt 数据库开发
注释mysql.pro 第六行#QMAKE_USE += mysql并且添加mysql相关头文件和lib库文件INCLUDEPATH += D:\Devlib_2019\mysql\includeLIBS += D:\Devlib_2019\mysql\lib\libmysql.lib 设置编译生成的路径DESTDIR = ../mysql/lib/,防止找半天生成的文件。第三:将生成的mysql驱动的lib、dll文件放入D:\Qt\5.15.2\msvc2019\plugins\sqldrivers。
2022-09-25 18:13:31
730
1
原创 Qt对象模型
标准c++对象模型为对象范式提供了非常有效的运行时支持。但它的静态特性在某些问题领域是不灵活的。图形用户界面编程是一个既需要运行时效率又需要高度灵活性的领域。通过结合c++的速度和Qt对象模型的灵活性,Qt提供了以下特性。1、一种非常强大的无缝对象通信机制,称为信号和插槽。2、可查询和可设计的对象属性。3、强大的事件Event和事件过滤器。4、用于国际化的上下文字符串翻译。5、高精度且先进的定时器QTimer,使得在事件驱动GUI中更优雅的集成更多任务成为可能。6、以自然的方式组织对象所有权的分层和可查询的
2022-06-26 20:20:10
452
原创 QPainter绘制空白或者受到其他控件颜色干扰
大家都知道:QPainter提供了高度优化的功能来完成大多数图形用户界面程序需要的绘图。它可以画任何东西,从简单的线条到复杂的形状,比如馅饼和和弦。它还可以绘制对齐的文本和像素地图。通常,它绘制一个“自然”的坐标系统,但它也可以进行视图和世界转换。QPainter可以操作任何继承QPaintDevice类的对象。QPainter的常见用法是在小部件的paint事件中:构造和自定义(例如设置钢笔或画笔)油漆器。然后画。记住在绘制之后销毁QPainter对象。例如:void SimpleExample
2021-10-23 20:38:51
957
原创 qcustomplot 自定义毫秒时间轴
qcustomplot 提供了显示 时间的坐标轴挺方便的,不过分配的tick 通过它的优化算法,会被自动设置tick的数量。在某些业务场景下就不适用。代码如下 可固定tick数量为从x轴的数据中筛选出等分tick坐标点 提供如下算法:double intiger;double v = modf(range.size() / double(mTickCount + 1e-10), &intiger); double ext = range.size() - intiger * mTi..
2021-05-23 21:16:16
2082
原创 qcutomplot实现游标工具栏toolTip
QCustomPlot到目前为止已经更新至2.1.0版本了。我看了QCustomPlot源码 目前性能方面在不开opengl下相比之前版本有了很大的提升。实测8条曲线,1秒刷新一次完全没有压力。 整个图库的架构很强。首先分成6个layer,每个layer绘制一张pixmap图片,并且每张pixmap上都有相应的布局都继承自QCPLayerable,最后在QCustomPlot重载paintEvent事件中一一绘制6个Layer的pixmap。目前唯一感觉不够的是:能不能用多线程把6个layer的pixmap
2021-04-13 21:28:25
1630
5
原创 QWidget子类化设置背景色,不继承父类颜色
一般设置背景颜色可以采用调色板进行调色QPalette pal(this->palette());pal.setColor(QPalette::Background, QColor("#F5F5F5")); //设置背景黑色this->setAutoFillBackground(true);this->setPalette(pal);这种方式在QMainWindow下没有任何问题!子类化QWidget并重载paintEvent(QPaintEvent)事件.
2021-04-13 21:02:20
2344
原创 QChart绘制图形的缩放原理
QChart类是管理图表系列、图例和轴的图形表示。想知道某段代码实现的原理,最直观的就是查看框架库的底层源代码,同时也可以锻炼阅读他人代码的能力及学习人家的某些高妙语法。来看看Qt关于缩放的实例实例中表明是摁键盘上的+/-进行缩放功能,调用QChart类的zoomIn()和zoomOut()。找到QChart的源代码如下:d_ptr又是什么东西,且看原来是QChartPrivate类哦,继续找到QChartPrivate的zoomIn(qreal factor)源代码原来是根据原有视图范围大小和缩放
2021-02-03 10:19:58
1385
1
原创 Qt开发之网络传输http/https应用集合
Qt使用http用到几个类QNetworkAccessManager、QNetworkRequest、QNetworkReply
2021-01-20 14:59:49
749
1
原创 Qt开发之QTableWidget
QTableWidget从继承QTableView,实质属于模型-视图范畴之内,只是带了默认模型(model)基于项目(item)的表格视图控件。我们不需要实现model内的数据加工。QTableWidget为应用程序提供了标准的表显示工具。QTableWidget中的项目(item)是由QTableWidgetItem来实现。QTableWidget各种属性可利用Qt自带的UI设计师来设置,如下图:接下来我们定制 2行4列的表格视图。 ui->tableWidget->se
2021-01-14 15:51:11
1128
原创 MYSQL性能提升规范
每每在处理数据库,总会遇到一些性能瓶颈,优化非常棘手,所以需要遵循某些规范,可根据自身业务要求协调以下规范。一、建表规约【强制】(1) 存储引擎必须使用InnoDB解读:InnoDB支持事物、行级锁、并发性能更好,CPU及内存缓存页优化使得资源利用率更高。【强制】(2)每张表必须设置一个主键ID,且这个主键ID使用自增主键(在满足需要的情况下尽量短),除非在分库分表环境下。解读: 由于InnoDB组织数据的方式决定了需要有一个主键,而且若是这个主键ID是单调递增的可以有效提高插入的性能,
2021-01-04 14:10:19
95
原创 Qt开发之QEvent事件运行流机制
最近,项目需要统一界面风格样式,自定义UI界面,或多或少会用到Qt事件系统,进一步了解以后你会发现跟MFC、wxWidgets这些前端界面框架的事件机制有些相似,甚至Qt同样可以完全使用Qt事件系统(实际上还不够完善,还有很多控件事件没有定义,需要为人为自定义)。说到事件,必然要说到Qt的信号与槽,信号与槽是Qt的核心机制,本质是回调技术的替代方案。...
2021-01-03 16:28:34
705
1
原创 STL之容器Vector内存管理
近来,公司业务比较少,开发工作比较少,趁这个时候做做总结,写写博客,记记笔记,完善一下自身技术知识体系!正所谓知其然,更要知其所以然--------------------------------其实就是方法论大家都知道,STL中的vector容器的数据安排(线性空间)及操作方式(支持随机访问),与array(数组)非常相似,唯一的差别在于前者为动态空间,随着元素的增加,内部机制会自动扩大空间而后者为静态空间。那内部机制是什么呢?我们以push_back为例:push_back (const
2020-12-26 22:26:32
518
原创 wxWidgets开发之多线程wxThread编程
上节说到使用wxCondition来实现某一消息处理的业务场景的多线程处理方法。在此之前先分享一下wxCondition用法。条件变量,最常用在多线程环境下,用来指示当前所在线程的某些条件已经满足,其他线程可以共享该线程的数据,或者去完成预定的任务。简单的说,就是某一个线程达到了某些条件,告诉其他线程,我已经达到了条件和要求了,然后其他线程就开始做他们的任务了。举个例子:可以使用它来指示一个消息线程已经有数据到来了。注意:调用wxCondition::Signal可能发生在调用wxCondi..
2020-12-21 20:35:14
817
原创 wxWidgets开发之线程wxThread
这节分享一下wxWidgets中的线程开发。在wxWidgets中有两种类型的线程:分离式跟联合,它们模仿POSIX线程API实现。如果我们查阅wxWidgets线程源码会发现如下几个win32线程API接口函数,就知道了其实我们对wxWidgets线程开发本质就是对win32开发。HANDLE WINAPI CreateThread( _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, _In_ SIZE_T dwStackSize, _In_ LPT
2020-12-15 20:41:56
1075
原创 wxWidgets开发之MVC架构树形控件二
前面已经介绍了一下关于wxDataViewModal跟wxDataViewCtrl的相关函数,而且提到了节点的设计。嗯,这节分享一下关于节点的设计。class MyMusicTreeModelNode;WX_DEFINE_ARRAY_PTR( MyMusicTreeModelNode*, MyMusicTreeModelNodePtrArray );class MyMusicTreeModelNode{public: MyMusicTreeModelNode( MyMusicTree
2020-12-14 20:25:14
333
1
原创 wxWidgets自定义标题栏
做界面开发,很重要的就是一个用户体验,然而用户体验更多归结于界面舒适度。所以有了这篇内容。。。。为了界面的美化,自定义标题栏。第一种方法利用wxWidgets中自带的鼠标事件(QMouseEvent)#pragma once#include <wx/artprov.h>#include <wx/xrc/xmlres.h>#include <wx/panel.h>#include <wx/gdicmn.h>#include <wx
2020-12-08 11:28:35
924
1
原创 wxWidgets开发之MVC架构树形控件一
wxDataViewModelis the base class for all data model to be displayed by awxDataViewCtrl.All other models derive from it and must implement its pure virtual functions in order to define a complete d...
2020-12-05 19:18:31
406
原创 wxWidgets开发之对话框
今天要分享的内容比较简单。在开始之前先分享一个界面搭建工具wxFormBuilder 正所谓工欲善其事,必先利其器嘛,呵呵呵...下载地址https://github.com/wxFormBuilder/wxFormBuilder/releases,关于wxFormBuilder的使用教程,我就不多加赘述了请看这篇博客https://www.cnblogs.com/lxt287994374/p/3590142.html好了,请看以下代码#pragma once#include <wx/
2020-12-05 17:11:41
545
原创 wxWidgets开发------前言
不知不觉,自己已经出来走出校门工作近三年了。想不到在现在这家公司竟呆了2个年头了,说来也不容易,自己是嵌入式软件出身,继而在人称“互联网寒冬”转入互联网行业。当初凭借着自学的那点Qt找到这家公司,跟着前辈用Qt开发交易前端,此时已接近项目上线时间了。此项目极其不稳定。上线后经常闪退,可以说这次项目是失败的。随即领导召集开会准备重构,找来wxWidgets框架,自此打响了重构的吹风号。。。。。但是,事情并没有这么简单,先前前辈一人以耗费996的时间独挑项目已然疲惫不堪,提出了离职申请,尽管领导再...
2020-12-04 14:39:02
368
原创 Qt12.9.2版本 解决中文乱码问题与国际化翻译冲突问题
在以前Qt版本中 解决中文乱码。 直接用QObject::tr 宏就够了或者用QTextCodec类 设置或者 QStringLiteral宏。 网上很多都用QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); 来设置全局编码后来随着Qt版本越来越高了,也越来越好了 这两个静态函.
2020-11-23 19:07:53
261
原创 MFC,多语言切换,功能区,菜单栏,状态栏,不能切换问题
经过,多番定位bug,发现是创建注册表子项出问题了IRes,返回5,在winError..h中定义的是#define ERROR_ACCESS_DENIED 5L拒绝访问LONG lRes = RegCreateKeyEx(hKeyParent, lpszKeyName, 0, lpszClass, dwOptions, samDesired,...
2018-10-12 14:44:53
764
原创 基于2440的Qt环境移植,且开发Qt跨平台程序
1、tslib编译和安装其他不多说,jz2440出厂移植的是Qtopia-free-2.2.0,在Qtopia 4.*版本中,默认的Tslib版本为Tslib 1.4。在Qtopia 2.*版本中,默认的Tslib版本为Tslib 1.3tslib-1.4.tar.gz下载链接http://vdisk.weibo.com/s/AcUHxOERV2k01.
2017-09-30 15:11:17
1066
原创 利用Qt中QSerialPort的类写串口通讯助手
首先,还是先说QSerialPort是Qt5.1引入的,其中一个问题是在读取数据时,采用QIO:Device中的信号readyread,这个信号在处理底层串口缓冲区时,是只要缓冲区一有数据,立马发送这个信号,所以我们在连接这个信号时会发生接收数据不完整(我这边是出现打开串口后,接收第一次的数据少字节)。所以很多人建议不使用这个类,采用QExtSerialPort这个第三方库。但是,如果要求不是很高
2017-09-03 19:06:44
469
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人