- 博客(688)
- 资源 (173)
- 收藏
- 关注
原创 Qt5.15.2静态编译 VS2017 with static OpenSSL
Qt 5.15.2静态编译 VS2017 with static OpenSSL
2023-11-26 22:22:38 2472 1
原创 Qt之基于QCustomPlot绘制直方图(Histogram),叠加正态分布曲线
Qt之基于QCustomPlot绘制直方图(Histogram),叠加正态分布曲线高斯分布(Gaussian distribution),又名正态分布(Normal distribution),也称"常态分布",也就是说,在正常的状态下,一般的事物,都会符合这样的分布规律。比如人的身高为一个随机变量,特别高的人比较少,特别矮的也很少,大部分都集中在中等身高。人的智商也是如此,社会精英毕竟少数,大多都是普通人。若随机变量X服从一个位置参数为μ,尺度参数为σ^2的概率分布. 且其概率密度函数为。
2023-10-31 01:14:15 4401 6
原创 Qt基础之三十九:Qt Creator调试技巧
Qt Creator调试技巧一.开始调试(F5)二.调试dll1.Attach to Running Application2.Attach to Running Application3.Start and Debug External Application三.调试源码1.MinGW2.MSVC
2023-10-27 19:07:09 4874
原创 Qt之自定义QStringListModel设置背景色和前景色
QStringListModel里只实现了Qt::EditRole和Qt::DisplayRole,不能直接设置背景色和前景色,所以我们要继承QStringListModel,重写其中的data和setData方法,使其支持Qt::ForegroundRole和Qt::BackgroundRole。需要注意的是在setData方法中,如果数据设置成功,需要发送dataChanged信号,通知各Item调用data方法获取数据。
2023-10-25 01:27:20 3078
原创 C++常用标准算法
算法主要由头文件、、组成。是所有STL头文件中最大的一个,范围涉及到比较、交换、查找、遍历、赋值、修改等等;体积很小,只包括几个在序列上面进行简单数学运算的模板函数;定义了一些模板类。
2023-10-24 20:11:07 1639 1
原创 Qt之自定义事件QEvent
自定义事件有很多应用场景,比如说从第三方库中回调过来的数据,如果要显示到界面上,需要在回调函数中将数据包装成事件发送出来,主线程接收到事件后解析数据并显示。下面是一个从第三方库获取视频帧并绘制到界面的例子。
2023-10-24 16:13:36 2266
原创 C++11新特性之十六:std::tie
为生成pair, c++ 提供了make_pair的快捷操作,相应的,对tuple也提供了make_tuple用于快速创建tuple对象。在c++ 11标准库中,加入了std::tie,在c++ 14中改进,方便使用。其与std::tuple关系密切, 主要目的是方便地使用std::tuple。元组std::tuple可以将不同类型的元素存放在一起,可以理解为std::pair的扩展(pair只能包含两个元素,而tuple可以多个)。因此,std::tie可以用于pair的解包。
2023-10-24 01:03:08 1891
原创 QMap之自定义Key和Value
为什么要自定义QMap的 key和value呢?因为在某些应用场景,基本数据类型的key和value并不能满足要求,比如座位在第几行、第几列,座位上人的姓名、职务;二维坐标系中散点的横坐标、纵坐标,散点的id、result。即key和value是一种多对多的关系。需要注意的是自定义的CustomKey中要重载运算符
2023-10-24 00:05:26 2352
原创 Qt之自定义model读写CSV文件
本文基于QAbstractTableModel实现了一个支持读写CSV文件的TableModel。CSV数据格式虽然很简单,但是网上大多数读写方式其实都是有bug的,没考虑到字段里包含逗号或换行符这种复杂数据的情况。
2023-10-23 23:33:07 2136
翻译 Qt基础之三十七:是否发生复制?浅谈参数在信号-槽中的传递
当信号的参数是对象的常引用,且槽的参数也是对象的常引用,那么这个对象会复制多少次呢?信号和槽的direct和queued连接方式有何不同?如果信号和槽的参数都按值传递,会发生什么变化呢?这个问题通常会在项目的某个时刻(比如说性能优化时)提及,但Qt文档对此只字未提。关于有一个很好的讨论,不过需要读者从所有评论中选择正确的答案。因此,下面让我们系统地讨论参数是如何在信号和槽间传递的。
2023-10-03 15:58:33 4417
原创 Qt优秀开源项目之十八:QtService
QtService是一个用于实现Windows服务或unix守护进程的开源项目源码可以编译成动态库,也可以直接在项目中引用源码源码目录qtservice/examples中包含了三个例子,值得参考。
2023-04-20 22:07:01 5553 1
原创 Qt基础之三十五:Qt中文乱码探索
Qt中文乱码看这一篇就够了先说个小技巧:Qt Creator支持显示源文件编码格式右上角点UTF-8,会弹出“文件编码”对话框我的开发环境是Win10 Qt5.12.6 VS2017,IDE是Qt Creator。
2023-04-07 00:13:12 5442 1
原创 Qt之设置子菜单的弹出延时
但是真*360安全卫士的托盘菜单却无此问题,而且它的子菜单弹出非常快,几乎无延迟。这就涉及到Qt的事件循环机制了,子菜单实际上是一个popup弹窗,自带事件循环,如果按钮的hover状态被取消前,事件循环就进入到子菜单中,就会出现上述问题。Qt中主菜单中的子菜单并不是立即弹出的,在windows上默认会延时256毫秒再弹出。这样一般情况下不会有问题,但是在定制菜单时可能会出现鼠标移动过快导致按钮hover状态无法自动取消的问题。这里先给出结论:将子菜单的延时设为0后,上述问题解决。
2023-04-02 15:45:28 2648
原创 PS(PhotoShop)调整图片角度
最简单的就是操作菜单:图像->图像旋转->任意角度但是这样并不能一次旋转到位,更专业的做法是先用“标尺工具”在图片上画一条线,这条线与水平方向的夹角就是想要旋转的角度。我这里画的线与马的眼睛平行,这样旋转后马就是正的了。然后操作菜单:图像->图像旋转->任意角度,此时弹窗中的角度就不需要自己输入了,直接点确定即可。
2023-03-25 22:46:49 2562 3
原创 Qt之实现类似软件安装时的新功能介绍界面
在软件安装时,一般会轮播软件的新功能,安装后,如果还想查看这些新功能该怎么办呢,我们可以把这个介绍新新功能的小应用集成到软件的“帮助”菜单中,比起纯黑文字的无趣介绍,图文方式的呈现会生动得多。最近在看《赘婿》,借几张图过来用用。
2023-03-24 13:33:36 4311
原创 Qt优秀开源项目之十七:QtPromise
QtPromise是规范的Qt/C++实现。该规范的译文见附录。QtPromise基于Qt5.6及以上版本,当然也包括Qt6。,每个API都提供了demo。Promise是一种异步编程的解决方案,可以替代传统的解决方案——回调函数和事件。Promise的三个特点:☆对象的状态不受外界影响。☆一旦状态改变了就不会在变,也就是说任何时候Promise都只有一种状态。☆以同步的方式调用异步,通过返回新的promise来实现then链式调用。
2023-03-21 20:37:01 4992 2
原创 Qt基础之三十三:海量网络数据实时显示
开发中我们可能会遇到接收的网络数据来不及显示的问题。最基础的做法是限制UI中加载的数据行数,这样一来可以防止内存一直涨,二来数据刷新非常快,加载再多也来不及看。此时UI能看到数据当前处理到什么阶段就行,实时性更加重要,要做数据分析的话还得查看日志文件。这里给出UDP+QListView和TCP+QPlainTexEdit两种实现方案。
2023-03-19 11:34:11 6471 2
原创 Qt基础之三十二:浅谈qDebug()
我们先来看看qDebug()的基本用法,再去研究qDebug的实现原理。除了qDebug(),Qt还提供了qInfo()、qWarning()、qCritical()方便我们打印不同种类的信息,而qFatal()直接结束程序,后面代码不再执行,用的较少。在Unix/X11和macOS,调试信息会打印到stderr;在Windows,如果是控制台程序,调试信息会输出到控制台,否则会输出到调试器(debugger)—比如说Qt Creator的应用程序输出(Application Output)窗口。
2023-03-18 09:56:48 6600
原创 Qt之调用内置的压缩/解压工具
之前在Qt中直接调用过zlib,详见:Qt之调用zlib压缩与解压缩功能没想到Qt还有内置的压缩/解压工具:QZipWriter和QZipReader
2023-03-17 12:19:21 2765
原创 Qt基础之三十一:Qt网络编程(TCP&UDP)
Qt网络模块(Network)提供了编写TCP/IP客户端和服务器的类。该模块不仅提供了低级(low-level)类,如QTcpSocket、QTcpServer和QUdpSocket,还提供了高级(hight-level)类,如QNetworkRequest、QNetworkReply和QNetworkAccessManager。
2023-03-14 22:21:04 5655
原创 Qt之高仿QQ系统设置界面
QQ或360安全卫士的设置界面都是非常有特点的,所有的配置项都在一个垂直的ScrollArea中,但是又能通过左侧的导航栏点击定位。这样做的好处是既方便查看指定配置项,又方便查看所有配置项。
2023-03-11 08:28:23 6903 4
原创 Qt中调用gtest进行单元测试及生成覆盖率报告
我下载的是1.12.1,这是最后一个支持C++11的版本。首先编译gtest,在windows上的编译方式和编译gRPC一模一样,详见,编译完了会生成几个静态库,如下图所示本文主要用到了libgtest.a下载,默认安装到C:\msys64,安装后修改安装目录下的etc/profile文件,在最后一行添加Qt所用的mingw版本,如下图所示否则在生成覆盖率报告的时候会出现如下提示信息,导致生成失败然后下载。
2023-03-05 14:28:59 3505
原创 Qt基础之三十:百万级任务并发处理
体现线程快的核心是延迟和吞吐量,延迟就是每个发送请求到收到响应所消耗的时间,延迟越短,程序越快,性能也越好。对于CPU密集型计算多线程本质上是提升CPU的使用率,所以对一个4核的CPU来说,理论上创建4个线程就可以了。我们都知道在进行I/O操作时,CPU是空闲状态,所以我们要最大化的利用CPU,不能让其是空闲状态。如图所示:CPU 在 A、B、C 三个线程之间切换,对于线程 A,当 CPU 从 B、C 切换回来时,线程 A 正好执行完 I/O 操作。CPU和I/O的耗时如果是1:1那开2个线程是合适的。
2023-02-28 23:03:17 4873 1
原创 Qt基础之二十九:图形视图框架(Graphics View Framework)及其应用
无意中从网络获取一份俄罗斯方块源码,基于图形视图框架(Graphics View Framework)实现的。当然源码的核心从来都不是界面,而是方块的移动、变形和消除等算法。源码非常完整,注释详细,经改动后已能在Qt5中运行,下面是运行效果,背景音乐和音效也是有的。
2023-02-21 22:45:40 5393 1
原创 Qt优秀开源项目之十六:SQLite数据库管理系统—SQLiteStudio
SQLiteStudio是一款开源、跨平台(Windows、Linux和MacOS)的SQLite数据库管理系统。当然我这里只是简单的测试了一下。SQLiteStuido的功能很强大,要熟练使用,还得多摸索才行。不想编译的话,可以去官网下载安装包,当前最新的版本是3.4.3,安装的时候居然可以选择简体中文。下图是数据库添加页面,选择刚才的test.db,"名称"会自动显示。通过菜单:数据库->添加数据库。通过工具栏:下图中的红圈所示。下图是数据表中的数据。
2023-02-12 12:04:07 4583 1
原创 Qt基础之二十六:Qt绘图系统(Paint System)
通过从QPaintDevice类派生并重新实现QPaintDevice:paintEngine()函数,即可添加一个新的绘图设备。在paintEngine中要告知QPainter应该使用哪种绘图引擎在该设备上绘制。要真正能够在自定义绘图设备上绘制,此绘图引擎必须是从QPaintEngine类派生的自定义绘图引擎。
2023-02-11 23:15:13 5778
原创 C++11实现的线程池:ThreadPool
github地址:https://github.com/progschj/ThreadPool关于其使用,详见:C++11并发学习之六:线程池的实现
2023-02-04 14:24:07 1431
原创 C++之监控文件是否被修改
软件开发过程中经常会用到配置文件,某些应用场景要求在软件运行时动态修改配置文件,此时就需要监控配置文件是否被修改,如果修改了,重新加载。这里config.txt和可执行文件同一目录,每次修改config.txt,就会打印File changed。
2023-02-04 14:11:22 2677 3
原创 Qt基础之二十三:反射(Reflection)
不同于boost这样的模板库,Qt利用自带的Meta-Object Compiler(moc)来生成额外的C++代码,这些代码实现了Qt程序所必须的元数据对象,可以说Qt是基于C++的一种扩展。反射是指程序在运行时动态获取对象属性与方法的一种机制,即编译器需要将类型信息(属性类型与偏移地址以及成员函数的地址等信息)编译到程序文件中,当程序运行时将这些信息加载到内存中去,做到运行时只根据对象的地址或引用就可以获取到对象的类型信息,从而利用这些信息达到修改或重建对象的目标。☆在运行时调用对象的方法;
2023-01-25 13:26:33 9291
原创 Qt之基于Graphics View实现Mesh网络拓扑图
Mesh是一种多节点、无中心、自组织的无线多跳通信网络,也就是网状结构网络。网络中所有的节点都互相连接,每个节点拥有多条连接通道,所有的节点之间形成一个整体的网络。
2023-01-17 22:30:33 7020 38
20种数据结构和算法的C++实现
2017-11-17
Qt下用QSplitter实现滑动窗口
2017-11-16
QML实现图像处理,包括浮雕、锐化等效果
2017-11-14
WebRTC学习之四:最简单的语音聊天
2017-01-10
WebRTC学习之三:录音和播放
2016-12-26
Qt国际化(I18N)
2023-12-31
QHVlcPlayer.rar
2021-02-27
Qt+libVLC+QWidget渲染
2021-02-27
Qt调用libVLC实现播放器
2021-02-26
TestUI.rar
2021-02-09
QHOpenGLPlayer.rar
2021-01-10
基于Qt和SDL2播放PCM
2021-01-05
Qt5版NeHe OpenGL教程6-10
2018-05-17
Qt5版Nehe OpenGL教程1-5
2018-05-14
Qt调用OpenGL API实现彩色旋转立方体
2018-05-09
MyTcpClient
2018-03-16
Boost.Asio C++ Network Programming随书源码
2018-01-29
Boost.Asio C++ Network Programming(高清,带书签,可复制)
2018-01-29
Effective Modern C++ 英文原版(带书签)
2018-01-27
++i和i++哪个更高效
2023-02-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人