
Qt
IT1995
每周个人笔记分享,欢迎广大网友查阅!
展开
-
Qt笔记-Qt Creator开发环境搭建
说句真实的,VS开发工具开发纯C/C++的项目还是十分方便的,但如果是Qt项目,QtCreator感觉还是略胜一筹。我这边以前vs2012他们都是基于x86_64开发的,所有的库和其他的程序都是x86_64的,所以这里得用xx86_64的。这里QtCreator开发环境算是完成了一半了,程序能正常编译运行了,但不能下断点调试,下面来解决断点调试问题。下载后建议进行在线安装,只需要勾选Debugging Tools for Windows,然后点击安装,会自动进行安装下载。此时断点调试就正常了。原创 2024-12-23 08:31:33 · 1232 阅读 · 0 评论 -
Qt笔记-获取HTTP的POST请求提交的数据时需要注意的地方(2024-09-02)
这里就是编码有问题,http中body的数据长度和http头的Content-Length不一样。特别是前端提交的数据带中文时。在大多数情况下,前端提交的数据都是utf8编码,而Qt的编码规则默认情况下操作系或登陆的用户有关。所以在Qt5下需要特别的指定(Qt4也需要,只是比Qt5麻烦下,多几行代码)。这里总结下来还是编码的问题。原创 2024-11-25 15:52:45 · 607 阅读 · 0 评论 -
Qt文档阅读笔记-Queued Custom Type Example
此案例创建一Block类,用于存储数据,并且在元对象系统中注册后,在多线程中进行信号与槽函数的连接中充当参数。原创 2024-07-08 08:38:31 · 567 阅读 · 0 评论 -
Qt笔记-解决VS中.h文件新增Q_OBJECT或继承QObject后编译报错问题
原因是.h中某类添加Q_OBJECT宏以继承QObject后就需要使用Qt的moc工具生成对应的moc_xxx.cpp文件。将此文件放到vs工程的generated files目录中,如果报#include找不到,修改下对应的路径即可。所以VS报错,就是缺少这个。随后就能编译通过了。原创 2024-04-29 09:43:35 · 921 阅读 · 0 评论 -
Qt笔记-解决子控制大小获取不正确(width和height)需要重制窗体后,才能获得正确的值
由于延迟为0,这意味着回调函数将在事件循环的下一次迭代中被执行,此时子控件的尺寸应该已经被正确计算和应用。在上面的示例中,我们将延迟参数设置为0,这样可以确保在子控件的布局和约束已经应用后,通过QTimer触发的回调函数才会执行获取子控件尺寸的操作,从而获得正确的宽度和高度值。在Qt中,子控件的宽度和高度在构造后并不准确,而只有在调整窗口大小后才正确,这可能是因为子控件的布局或者约束尚未完全计算和应用。通过将获取子控件尺寸的代码延迟到事件循环的下一次迭代中,可以确保在布局和约束已经应用后获取到正确的尺寸。原创 2024-04-22 08:34:35 · 964 阅读 · 0 评论 -
Qt笔记-解决Qt程序连不上数据库MySQL数据库(重编libqsqlmysql.so)
Qt的QSqlDatabase使用的是libqsqlmysql.so,而libqsqlmysql.so其实是对libmysqlclient.so的封装。差不多就可以知道了,无mysql客户端驱动,在机器上装下mysql-client。如果发现是libmysqlclient.so => not found。将里面的pro文件修改添加和LIBS和INCLUDEPATH。造成这样的问题大多数是libqsqlmysql.so有问题。再重编下libqsqlmysql.so,即可。再次运行程序就可以了。原创 2024-04-01 08:11:14 · 686 阅读 · 1 评论 -
C/C++笔记-使用mysql-connector-c连接mysql数据库
libmysql.lib 是 Windows 平台上使用的库文件,它是使用 Visual Studio 编译器编译的。mysqlclient.lib 是 Linux 平台上使用的库文件,它是使用 GCC 编译器编译的。libmysql.lib 和 mysqlclient.lib 都是 MySQL C Connector 的库文件,但它们针对不同的操作系统和编译器。解压后lib有2个,一个是libmysql.lib一个是mysqlclient.lib。原创 2024-01-29 10:56:27 · 1572 阅读 · 1 评论 -
Qt文档阅读笔记-Fetch More Example解析
Fetch More Example这个例子说明了如何在视图模型上添加记录。这个例子由一个对话框组成,在Directory的输入框中,可输入路径信息。应用程序会载入路径信息的文件信息等。不需要按回车键就能搜索。当有大量数据时,需要对视图模型进行批量增加。此案例,实现了FileListModel类,此类包含了一个视图模型,这个视图模型获取路径下的文件。下面来看下FileListModel的代码。原创 2023-11-13 08:49:51 · 1823 阅读 · 0 评论 -
Qt笔记-自定义QSet,QHash的Key
②qHash(const QString &, uint):生成hash的,同样要传入唯一标识的,上面的例子是用name生成的hash再和出生时间异或。①operator==:这里要注意,判断2个自定义对象是否相等,如果有唯一标识字段,比如主键,就可以直接用那个,如果没有,就在结构体中想想,拿些字段组合可以唯一标识这个结构体;构造2个内联函数,方便QHash去对比一个是operator == ,一个是qHash(const QString &, uint);在此我直接总结下,方便查阅。原创 2023-06-26 08:44:08 · 3529 阅读 · 0 评论 -
Linux笔记-so.1和so的区别(三方程序链接Qt的so.1和so)
如果是这样的,那么需要把这些都拷贝到对应的lib目录下,其他程序调用的时候一般不会直接链接到libXXXLib.so,会链接到so.版本号的程序所以有时就会出现error while loading shared libraries .... not found。领导让你从中扣出某个功能,再进行一些业务操作,变成新的程序,而要扣的某些功能,有的用了公司其他人开发的so。②使用ldd,查看程序链接到哪些dll,在国内,写的so一般都没有版本号,没有链到版本号的so要特别注意;最后屁股能坐得住椅子,慢慢测。原创 2023-06-05 20:46:13 · 5627 阅读 · 0 评论 -
Qt笔记-pro文件新增宏、if、else、编译后的shell命令(写so或dll时提高开发效率)
背景是这样的,目标是要写个dll,so,这种动态链接库,但如果直接写这玩意的话,调试起来很麻烦,需要用其他程序去加载他,特别是在linux上,没界面的那种,开发效率简直慢了不知道多少。从中LIBXXX_LIBRARY是在pro文件中定义的,当有时就加载libXXX_global.h,没有就说明是exe,就。②代码中通过pro中定义的宏,对Q_DECL_EXPORT和Q_DECL_IMPORT进行设置,设置到要导出的类上。最后来看下关键的类,也就是导出的类,提供给三方用的。③#:pro文件中“#”代表注释;原创 2023-05-31 18:02:50 · 4496 阅读 · 0 评论 -
C/C++笔记-使用Qt的UI文件时make流程
Wl, -rpath:①用于编译时指定间接引用的库位置,作用同-Wl,-rpath-link;从中发现了个有意思的,以前都以为moc_xxx.cpp文件是通过对于的.h和.cpp使用moc联合生成的,现在发现他仅仅是使用对应的.h文件生成。这里就很明确的发现了,在编译阶段,使用了Q_OBJECT和继承了QObject的类会编译时会生成2个object文件,分别是原始object和带moc的object文件。-O2:optimization优化,比-O高一级的优化,编译优化,具体优化哪些内容,在此不说明;原创 2023-05-15 11:04:35 · 2486 阅读 · 0 评论 -
C/C++笔记-构造makefile使用MOC程序及编译,链接
②:$(PROGRAM): $(OBJECTS):这个会先找在文件中找main.o Test.o moc_Test.o,如果找不到就在makefile下,看有没有对应的标签。背景是这样的构造一个Test类,使用了Q_OBJECT宏,和继承了QObject,也就是元对象,这时,makefile需要如何写。每一条命令在前一篇文章中已经说明了。原创 2023-05-08 21:17:02 · 3789 阅读 · 0 评论 -
C/C++笔记-分析带有Q_OBJECT继承QObject的类make流程
Wl, -rpath:①用于编译时指定间接引用的库位置,作用同-Wl,-rpath-link;从中发现了个有意思的,以前都以为moc_xxx.cpp文件是通过对于的.h和.cpp使用moc联合生成的,现在发现他仅仅是使用对应的.h文件生成。这里就很明确的发现了,在编译阶段,使用了Q_OBJECT和继承了QObject的类会编译时会生成2个object文件,分别是原始object和带moc的object文件。-O2:optimization优化,比-O高一级的优化,编译优化,具体优化哪些内容,在此不说明;原创 2023-05-03 14:49:49 · 3954 阅读 · 1 评论 -
C/C++笔记-写一个Makefile并链接QtCore库使用QString,QDebug
Wl, -rpath:①用于编译时指定间接引用的库位置,作用同-Wl,-rpath-link;②用于运行时指定所有引用库的位置,作用同修改环境变量(LD_LIBRARY_PATH),并且库路径引用优先级高于LD_LIBRARY_PATH;③$原创 2023-04-23 14:52:20 · 2446 阅读 · 2 评论 -
C/C++笔记-记录一次对qmake生成的Makefile的分析(2023-02-07)
Wl, -rpath:①用于编译时指定间接引用的库位置,作用同-Wl,-rpath-link;②用于运行时指定所有引用库的位置,作用同修改环境变量(LD_LIBRARY_PATH),并且库路径引用优先级高于LD_LIBRARY_PATH;-fPIC:用于生成位置无关的代码(Position-Independent-Code);-DQT_CORE_LIB:这个没查到,但看名称差不多能猜到是QT核心库的调试;-D_REENTRANT:它会对部分函数重新定义它们的可安全重入的版本;-L:Link链接路径;原创 2023-04-10 21:47:19 · 2431 阅读 · 0 评论 -
Qt文档阅读笔记-Tetrix Example解析
Q_OBJECTpublic:private:在类的private中有几个成员变量,包括前端画线,各种挂机和按钮,按钮有开始游戏,暂停当前游戏和退出。TetrixWindow继承了QWidget,但QWidget父类不能构造自己想创建的结构,所以,一般用上面这种方式创建程序员想要的界面。TetrixPiece类为游戏区域创建俄罗斯方块,包括形状、位置、方块在游戏区域的位置范围。原创 2023-03-30 09:04:53 · 2356 阅读 · 0 评论 -
Qt笔记-pro文件中添加-fpermissive
在Makefile里面写比较方便。老项目里面的库,一包含就报-fpermissive错误。我在Linux上成功了。原创 2023-03-13 09:18:43 · 2890 阅读 · 0 评论 -
Qt文档阅读笔记-Qt, QML, Widgets…What Is The Difference?
这个是个人总结和博文无关。Widgets相当于是和VB、MFC、C#这类竞争的。QML相当于是和Android、IOS这类移动端竞争的。原创 2022-12-27 15:05:46 · 1198 阅读 · 4 评论 -
Qt文档阅读笔记-Qt for Linux/X11 - Building from Source
首先得把这个下载下来。原创 2022-12-12 08:49:44 · 1341 阅读 · 1 评论 -
Qt笔记-pro文件配置include和lib及遍历文件夹及文件排序
pro文件里面也可以定义变量,比如DPI_INCLUDE和DPI_LIB,调用的时候用$${DPI_INCLUDE}和$${DPI_INCLUDE}就可以了。有QDir::Time、QDir::Size、QDir::Type这些比较常用。QDir::SortFlag::Name,就是按照文件名排序。首先是pro文件配置include和lib。连接include用INCLUDEPATH。LIBS为链接的动态和静态文件。原创 2022-11-28 15:33:51 · 2945 阅读 · 1 评论 -
Qt文档阅读笔记-Zoom Line Example
i < 500;i++) {}这里可以看到这条直线数据,x轴是0~500,每1个单元一个点,y轴是qSin(M_PI / 50 * i) * 100,中学以来我们都知道sinx是个曲线图像,并且当x为π时,图像会与x轴相交,所以qSin(M_PI / 50 * i)的含义就是变化相位,变化成,当x取50的倍数时,图像与x轴相交,最后那个*100,是把sin函数从[-1,1]的值放大到[-100,100]。最后是在y轴加上一个0~20的随机数。我个人觉得是增加图形的毛刺感。原创 2022-10-31 09:09:19 · 824 阅读 · 0 评论 -
Qt文档阅读笔记-Hello Speak Example
官方的这个例子比较有意思,在此记录下,方便以后查阅。原创 2022-10-24 10:20:12 · 1850 阅读 · 6 评论 -
Qt文档阅读笔记-Bluetooth Scanner Example
项目是这样的,主要有2个界面,一个是service,一个是device。当调用QBluetoothDeviceDiscoveryAgent,的start方法后,就会emit2个关键信号,分别是deviceDiscovered()和finished()。简单描述下就是当发现蓝牙设备后,会触发这个信号,并且将发现的设备以QBluetoothDeviceInfo的形式给到槽参数里面。这里主要想弄懂的是如何使用Qt的蓝牙类,扫描蓝牙的,所以主要关注点在。如果电脑上只有1个蓝牙,就不用这么麻烦了。原创 2022-10-04 14:42:52 · 1321 阅读 · 1 评论 -
七夕专属博文-使用QGraphics画“红心“或“黑心“(含数学模型讲解)
实现的效果是这样的,使用QGraphicsEllipseItem和QGraphicsPolygonItem画“心”。比如来个红心。原创 2022-08-01 14:04:32 · 1534 阅读 · 8 评论 -
Qt笔记-利用QAxObject将文件夹内的所有docx转pdf
这里用Qt提供的AXContainer库就可以了,但这个只能在Windows平台上用。FileType为17代表是pdf。FileName文件名;原创 2022-07-29 08:50:11 · 1408 阅读 · 1 评论 -
Laravel笔记-用户登录时密码进行RSA加密(提高系统安全性)
提交时只要带上加密好的password和对应的type。因为C++端是跑马灯的形式,有24个公钥私钥。需要指定是哪一个,才能解密。万一中途xx路由器被入侵了。被人抓到这个包,本来就是http的,又是明文,太不安全了。所以这里做一个加密。前段时间写了一篇提高Laravel用户登录,登录失败5次后,锁帐号的功能。后台验证时,当格式验证成功后,对password进行RSA解密。Qt每小时生成RSA公钥和私钥,并且提供加解密的HTTP接口。...原创 2022-07-24 08:52:54 · 9211 阅读 · 0 评论 -
Qt文档阅读笔记-Audio Example解析
具体可以查本人的这篇博文-Qt文档阅读笔记-QAudioInput&QAudioFormat解析与实例。首先要学习两个类,分别是QAudioInput和QAudioFormat。这个例子很有意思,今天分析了下,在此记录下笔记,方便下次查阅。这里查询了当前系统中是否设置了麦克风,如果没有,就直接退出了。将刚刚采集的音频放到最后80坐标里面(1920~2000)这里-128是为了使得y轴有负数,除以128是因为。这里官方给出的解释就没了,后面我自己补充下。Y轴坐标是-1,到1之间。...原创 2022-07-23 08:32:37 · 925 阅读 · 0 评论 -
Qt文档阅读笔记-QAudioInput&QAudioFormat解析与实例
这个类提供了从外设接收音频数据的接口。使用逻辑是这样的,首先创建QAudioInput并且指定好QAudioDeviceInfo,以及QAudioFormat。然后调用start函数,指定QIODevice完成自己想要的功能。调用start后会以指定的形式进行输出到file中。在任意时刻,QAduioInput有以下四种状态active活动suspended暂停stopped结束idle空闲这些状态可以在QAudio。...原创 2022-07-22 08:54:38 · 3502 阅读 · 3 评论 -
Qt笔记-解决QTcpSocket发送数据成功,但接收端接收不全的问题
这里主要是这样的Qt写了一个服务端,在开发环境下,没出现任何问题,但在生产环境下,就出现问题了。使用Fiddler的简单抓了下包:发现Body只有27045,而请求里面确是这样的。这里就很有意思了。这里的Qt服务端,在发送完数据后,会主动和客户端断开连接。不像其他的web服务器,需要等客户端来断开连接。这里用curl请求会有报错: 大体上的意思就还有这么多位的数据没读,通道就被关闭了。在Qt服务端关于关闭的代码是这样的: 并且这个tcpSocket->write的返回值,也是正确的,说明的确把要原创 2022-07-14 09:00:07 · 5074 阅读 · 0 评论 -
Linux笔记-达梦DPI开发环境搭建(无需搭建达梦库)
这里搭建的思路是从搭建好达梦库的机器中将达梦DPI的so和对应的include导出来,到新机器上,就是DPI的开发环境了。其中so为:libdmdpi.so但这里要保证几点:①搭建好达梦库的机器操作系统与新机器要一致。②最后CPU的架构都是一致的,比如X86_64架构。编译时,就把include包含上,再把libdmdpi.so链接上。就好了。程序运行时,可能会libdmdpi.so找不到。需要做如下修改:在最后面添加好libdmdpi.so的路径。即可,如:再重新加载下即可:具体源码可参原创 2022-07-13 09:16:06 · 1959 阅读 · 0 评论 -
OpenSSL笔记-生成RSA公私密钥以PEM格式到char*中(非保存为文件)
OpenSSL笔记-生成RSA公私密钥以PEM格式到char*中(非保存为文件)不多说,直接上关键代码:这个RSAStu是我自己写的结构体。打印下:这里包含的头文件为:原创 2022-07-11 08:45:09 · 965 阅读 · 0 评论 -
Qt笔记-char[]或unsigned char[]转QByteArray时要注意的地方
下面这种都是文本串的形式,就可以直接转了比如这样的:这类数据都是文本串的可以直接转出来。没有什么问题:但是,如果char[]和unsigned char[]的存的是二进制就不能这么搞了,比如存储加密数据,这样直接转有很大的可能,数据会丢失,因为存二进制时,很有可能在中间某个字节转成文本是\0。以加密为例。这里要拿到返回的数组长度,比如这样的:这里的result就是加密后的长度,转成QByteArray时就需要用到这个了。如果直接这样:有极大的可能数据会丢失,造成加解密失败。..原创 2022-07-10 08:30:52 · 7861 阅读 · 2 评论 -
OpenSSL文档阅读笔记-RSA Encryption & Decryption Example with OpenSSL in C
这篇博文有点老了是2014年3月19日的。但效果还是杠杆的。这篇博文说明如何调用OpenSSL进行RSA加解密。编程语言用的是C。本博文小节:①使用OpenSSL生成RSA密钥;②使用公钥加密,私钥解密;③使用私钥加密,公钥解密;④加解密示例代码。使用下面的命令试生产2048位的RSA私钥从私钥中提取公钥:注意生成的证书都是pem格式,这个是用ASCII存的,Base64编码的格式。对应的API函数分别为:这里的编程逻辑是先构造一个RSA结构体:这样就能直接创建公钥和私钥了如果原创 2022-07-09 07:30:05 · 897 阅读 · 0 评论 -
OpenSSL文档阅读笔记-How to Use OpenSSL to Generate RSA Keys in C/C++
这篇文章是2014年2月26号的,有点老了,但挺有用的。首先要配置好环境,再前一篇笔记中已经说明了,在此不再说明。这里我把老外的这套代码,改写成Qt pro管理项目。关键代码如下:GenerateRSAKeys.promain.cpp运行截图如下:此时输出两个文件:private.pem:public.pem源码打包下载地址:Qt/GenerateRSAKeys at master · fengfanchen/Qt · GitHub...原创 2022-07-08 08:54:48 · 333 阅读 · 0 评论 -
Qt笔记-Centos7搭建OpenSSL开发环境及Qt调用OpenSSL实例
这里Centos上已经安装好了Qt5.5.1下面搭建下OpenSSL首先下载并安装zlib再安装 perl-Test-Harness随后下载openssl-1.1.1o并安装:完成好后设置好环境变量在ssl.conf中添加如下内容:最后运行:就可以看到OpenSSL版本了创建Qt项目:OPenSSLDemo.promain.cpp运行截图如下:源码打包下载地址:Qt/OpenSSLDemo at master · fengfanchen/Qt · GitHub原创 2022-07-07 09:02:17 · 668 阅读 · 0 评论 -
Qt笔记-QMap自定义键(key)
如下key值:自定义key时会出现如下问题:需要重写左操作符号,如下:所有源码如下:调试截图如下:源码打包下载地址:Qt/QMapKeyCustom at master · fengfanchen/Qt · GitHubThe knowledge point of Qt. Contribute to fengfanchen/Qt development by creating an account on GitHub.https://github.com/fengfanchen/Qt/tr原创 2022-06-22 08:56:29 · 3123 阅读 · 0 评论 -
Qt文档阅读笔记-staticMetaObject解析与实例
const QMetaObject *QObject::metaObject() const元对象包含继承QObject的类,QObject的子类,类名,子类名,属性,信号和槽等等等。可以使用metaObject实例会指定对象,如下代码:这里定义了一个TestClass,使用Qt反射机制,创建类,并设置值打印源码如下:TestClass.hmain.cpp程序运行截图如下:源码打包下载地址:Qt/StaticMetaObjectDemo at master · fengfanchen/Qt原创 2022-06-21 08:57:26 · 1249 阅读 · 0 评论 -
C++笔记-Centos7搭建OpenCV3.4开发环境
目前是2022-04-25 23:48:03,此篇博文分享到互联网上估计是1-2个月后的事了,此时的OpenCV3最新版是3.4.16这里前提是gcc,g++,cmake都需要安装好。没安装好的,用这个命令:将源码下载好,解压,创建build文件,在cmake这里一定要生成opencv_world,这样后期开发和部署都方便。出现Configuring done和Generating done就是成功了。然后就直接make就好了。这里可以看到:include文件在/usr/local/inc原创 2022-06-20 08:50:30 · 1454 阅读 · 2 评论 -
OPenCV笔记-Mat转Base64(使用Qt进行转换)
关键代码如下:打印如下:这里我们找个在线解析的来试试:这里要注意HTML中img标签使用的规则:Base64 在HTML中的使用此时图片正常显示了。原创 2022-06-13 08:49:37 · 1074 阅读 · 0 评论