
Qt入门及实战宝典
文章平均质量分 86
从事技术研发10多年,有丰富的线上项目实战和实施经验,本小博乃点滴工作及项目实战总结积累,精华知识记录, 从入门到进阶,绝对物超所值,内容通俗易懂,代码,正版工具软件,开发文档精中选精,一应俱全,微信、QQ提供在线指点和帮助。
大王算法
主要做机器人,操作系统,算法及AI方面的研发工作,有感兴趣的朋友可以私信加我好友,一起探讨交流!
展开
-
C++常量变量作用域及使用详解
对一个C++变量来说,有两个属性非常重要:作用域和生命周期,它们从两个不同的维度描述了一个变量--时间和空间。顾名思义,作用域就是一个变量可以被引用的范围,如:全局作用域、文件作用域、局部作用域;而生命周期就是这个变量可以被引用的时间段。不同生命周期的变量,在程序内存中的分布位置是不一样的。一个程序的内存分为代码区、全局数据区、堆区、栈区,不同的内存区域,对应不同的生命周期。在C++中,变量的作用域和生命周期是两个核心概念,它们定义了变量何时可以被程序访问以及变量存在的时间长度。原创 2024-04-05 22:16:28 · 153 阅读 · 1 评论 -
浅谈加密技术
通过我们的了解,对称加密的实现比较简单,但是安全性不是很高,一般用在对安全要求级别不是很高的情况下,但是非对称加密比较复杂,但是安全性很高,在实际应用中需要我们综合利弊考虑.原创 2024-03-10 21:42:28 · 125 阅读 · 0 评论 -
Qt Json解析详解
Json(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。原创 2019-04-30 23:12:11 · 745 阅读 · 1 评论 -
Qt XML读取写入操作
XML(eXtensible Markup Language,可扩展标记语言)是普通用于数据交换和数据存储的一种多用途文本文件格式;SVG(可标量矢量图形)XML格式,QtSvg模块提供了可用于载入并呈现SVG图像的类;MathML(数学标记语言)XML格式的绘制文档,可以使用Qt Solution中的QtMmlWidget操作;对于一般的XML数据处理,Qt提供了QtXml模块...转载 2019-04-30 23:10:21 · 543 阅读 · 0 评论 -
QtCreator编译速度慢的解决方法
QtCreator编译速度慢的解决方法“用Qt写的程序编译比MFC慢”的说法是错误的绝对错误,单位代码行数编译,Qt远比MFC快得多,因为Qt库的头文件设计非常好,尽量都使用了前置声明,避免了头文件嵌套,几乎所有类都使用了公有类和私有类的设计,把没必要公开的声明放到私有头文件里,避免了编译时引入过多代码。而MFC没有这样的设计。至于大家感觉MFC快,主要原因是MFC工程默认打开了编译预处理...转载 2019-04-28 08:59:35 · 2973 阅读 · 0 评论 -
Qt Model/View使用模型/视图(二)
Qt提供了两个标准的模型:QStandardItemModel和QFileSystemModel。 QStandardItemModel是一个多用途的模型,可用于表示list,table,tree views所需要的各种不同的数据结构。这个模型也持有数据。 QFileSystemModel维护相关的目录内容的信息,它本身不持有数据,仅是对本地文件系...原创 2019-03-31 22:27:50 · 742 阅读 · 1 评论 -
Qt Model/View模型/视图使用总结(一)
在我们Qt项目的数据实时更新显示中,我们经常会用到MVC框架;Qt也提供了一些MVC(模型/视图结构的类),可以用来管理数据并呈现给用户。MVC的体系结构能使数据和模型分离,使得我们更加灵活的构建模块组件,而且它提供了一个标准模型接口,以允许更多类型的数据显示到现有结构的视图中。 MVC由三种对象组成。Model是应用程序对象,View是它的屏幕表示,Controll...原创 2019-03-31 22:27:39 · 4324 阅读 · 0 评论 -
Qt实现背景图片旋转缩放
1.给QWidget 增加背景图片,图片可随窗口放大缩小 this->Mwind->setStyleSheet("border-image: url(:/icon/loj.png);");//注意一定要使用border-image,使用background-image就会出现窗口放大,背景图片过小重叠的现象2. 给QPushButton 增加背景图片:背景图片可根...原创 2019-02-28 23:01:06 · 3052 阅读 · 0 评论 -
QT5之exe发布及dll打包
1.新建一个目录例如comSoft.2.把要打包的可执行文件拷贝到comSoft文件下3.使用cmd命令,进入到目标文件夹执行打包命令:windeployqt ComDataSend.exe执行完,查看打包目录ok,搞定!...原创 2019-02-28 23:01:03 · 1098 阅读 · 0 评论 -
Qt事件驱动机制原理及源码剖析
什么是Qt事件驱动? 我们在写Qt工程类项目的时候都会发现,主程序里面都有这么一段代码:int main(int argc, char *argv[]){ QApplication a(argc, argv); MainWindow w; w.show(); return a.exec();} 实际上a...原创 2018-12-31 17:52:28 · 3436 阅读 · 0 评论 -
QT图形视图框架(The Graphics View Framework)
图形视图框架The Graphics View Framework关键词翻译对照表:Graphics View:图形视图。Scene:场景 /场景管理器( Scene同时担负着管理场景中的对象,建立索引等工作)。Item:这里翻译为对象, Graphics View Framework下的 GraphicsItem是场景中可以被显示的元素。这里翻译成对象便于理解。Graph...翻译 2018-11-28 21:28:14 · 590 阅读 · 0 评论 -
QMainWidow去掉菜单栏后添加放大最小化关闭功能
Qt去掉菜单栏:/* 标题栏样式 */ this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint); 去掉以后,发现窗口无法移动,无法放原创 2018-05-27 21:56:54 · 1080 阅读 · 0 评论 -
大端模式、小端模式及其在Qt中的转换
字节序是在处理跨平台数据传输和存储时必须考虑的重要概念。Qt通过提供了灵活的字节序处理机制,使开发者能够更容易地编写兼容不同平台的代码。原创 2018-05-27 19:05:28 · 88 阅读 · 1 评论 -
Object::connect: No such signal
RecUdpThread *receive = new RecUdpThread (); connect(receive , SIGNAL(sendData(char* Data,int DataLen), this, SLOT(RevData(char * Data,int DataLen)));去掉参数名, 保留类型即可:RecUdpThread *receive = new Re...原创 2018-05-06 10:31:05 · 4640 阅读 · 1 评论 -
Qt网络编程错误总结
1.报错提示QObject::connect: Cannot queue arguments of type 'QAbstractSocket::SocketError' (Make sure 'QAbstractSocket::SocketError' is registered using qRegisterMetaType ().)错误原因:因为没有指定 connect的链接方...原创 2018-05-02 22:31:36 · 4559 阅读 · 0 评论 -
Qt 的并发机制详解
QProcess和QThread提供了两种并发方式。 QProcess是一个能够非常方便的用于启动和控制其它进程的类。它派生自QObject,可充分利用信号和槽与其它对象交互。 一个QProcess可以使用start()函数来启动一个进程。新进程将会成为一个子进程并随着父进程的终止而终止。 QThread为我们QT项目的异步和同步并发提供了强大工具。...原创 2018-03-31 21:50:53 · 1373 阅读 · 0 评论 -
Qt 事件过滤的5种级别
以下按照事件过滤等级由强到弱分为5级:1级、继承QApplication类,并重载notify()函数. Qt 是用QApplication::notify()函数来分发事件的.想要在任何事件过滤器查看任何事件之前先得到这些事件,重载这个函数是唯一的办法. 通常来说事件过滤器更好用一些, 因为不需要去继承QApplication类. 而且可以给QApplication对象安装任意个数...原创 2018-03-25 22:19:05 · 1080 阅读 · 0 评论 -
C/C++经典面试题型总结
C/C++面试,你需要掌握的不仅是编辑C++语言的基础知识、以及在实际项目中如何应用这些知识。下面是我整理的一些C/C++经典面试题,分享给大家,希望对大家有帮助,并预祝各位正在面试的小伙伴面试顺利并找到理想的工作!1.定义一个”数据类型” datatype类,能处理包含字符型、整型、浮点型三种类型的数据,给出其构造函数。int i;float f;原创 2018-03-25 22:18:45 · 165 阅读 · 1 评论 -
QSpacerItem类及布局间隔操作示例简析
QSpacerItem类是Qt的一个布局操作类。它提供了布局中的空白空间。通常情况下,你不需要直接使用这个类。Qt内置的布局管理器提供以下函数来处理布局中的空白: 如QHBoxLayout中提供:addSpacing(), addStretch(), insertSpacing(), insertStretch()四种操作。QGridLayout布局中提供:setRowMinimumHei...原创 2018-03-25 22:16:40 · 904 阅读 · 0 评论 -
Qt 下快速读写Excel指南
Qt Windows 下快速读写Excel指南很多人搜如何读写excel都会看到用QAxObject来进行操作,很多人试了之后都会发现一个问题,就是慢,非常缓慢!因此很多人得出结论是QAxObject读写excel方法不可取,效率低。 后来我曾试过用ODBC等数据库类型的接口进行读写,遇到中文嗝屁不说,超大的excel还是会读取速度慢。 最后,看了一些开源的代码后发现,Windows下读取exce...转载 2018-03-25 22:16:17 · 1846 阅读 · 1 评论 -
360C++面试总结
本来视频面试,后来他说他那边有问题,就电话面试1. 自我介绍2. 问了下hadoop, 研究生有学过没,storm和spark的区别3. 讲下memcached, memcached集群中有一个节点失效了,怎么处理,哈希一致性算法实现;4. 看了libevent,讲下同步,异步,阻塞,非阻塞的区别5. 有了解服务端开发的相关技术吗,讲下;6. 有github账号吗,有看源代码吗7. 问了我喜欢做服务端的哪方面;8. 有用过哪些数据库原创 2018-03-18 20:57:34 · 104 阅读 · 0 评论 -
C++经典面试题总结(二)
51. 引用与指针有什么区别?答 、1) 引用必须被初始化,指针不必。2) 引用初始化以后不能被改变,指针可以改变所指的对象。3) 不存在指向空值的引用,但是存在指向空值的指针。52. 描述实时系统的基本特性答 、在特定时间内完成特定的任务,实时性与可靠性。54. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别?答 、全局变量储存在静态数据区,局部变量在堆栈中。55. 堆栈溢出一般是由什么原因导致的?答 、没有回收垃圾资源56. 什么函数不能声明为虚函数?原创 2018-03-18 20:57:16 · 70 阅读 · 1 评论 -
C++经典面试题总结(一)
C++语言相比较其它语言而言,相对来说比较难的,而且面试细节巨多,本篇博客我对C++的常见必考经典面试题做了一个总结,希望对大家有帮助,预祝各位即将面试的同学能够找到自己心仪的工作。1.面向对象的程序设计思想是什么?答:把数据结构和对数据结构进行操作的方法封装形成一个个的对象。2. 什么是类?答:把一些具有共性的对象归类后形成一个集合,也就是所谓的类。3. 对象都具有的两方面特征是什么?分别是什么含义?答:对象都具有的特征是:静态特征和动态特征。原创 2018-03-18 20:55:49 · 73 阅读 · 1 评论 -
C++字符串操作总结
string类的常用方法有哪些。string查找替换、分割字符串、比较、截取、类型转换、排序等功能都提供了强大的处理函数,可以代替字符数组来使用。1.定义和构造初始化2.string 提供了很多构造函数,可以以多种方式来初始化string字符串3.赋值,拼接字符串string重载了 = + += 等多种运算符,让字符串组合拼接更简单4.访问字符操作string可以按数组方式,以下标来访问。还可以用at()函数访问指定的字符5.可以使用 STL 的接口。原创 2018-03-18 20:55:34 · 92 阅读 · 0 评论 -
Qt组件显示输入的正则表达式使用总结
Qt的正则表达式校验器类:QRegExpValidator。做界面编程的时候,对文本框的处理往往是个很麻烦的事情,一是焦点进入文本框时,从人性化考虑,应选择文本框中文本,方便输入;二是,限制文本框的输入,只允许输入有效的文本,如果不这样做的话,那么就需要在程序中滤去非法输入,正则表达式的功效就显示出来了! 下面是一些常用的利用正则表达式校验器限定数值范围的用法: ...原创 2018-03-08 22:36:25 · 1272 阅读 · 0 评论 -
Qt线程同步一个生产者多个消费者的实现
根据QMutex和QSemaphore的特点,我们可以实现一个生成者对应多个消费者的的生产者模型。可参考:http://blog.csdn.net/fanyun_01/article/details/79354222http://blog.csdn.net/fanyun_01/article/details/79354106 互斥量可以锁定一次,而信号量可以在设置上限大...原创 2018-02-25 22:13:30 · 2705 阅读 · 0 评论 -
QSemaphore使用详解
QSemaphore类提供了强壮的整数信号量。 QSemaphore也可以被用来使线程的执行顺序化,和QMutex的方法相似。信号量和互斥量的不同在于,信号量可以在同一时间被多于一个的线程访问。 假设我们有一个应用程序把数据存储到一个大的树型结构中。应用程序创建了10个线程(通常被称作线程池)来执行树中的搜索。当应用程序搜索树中的一小片数据,它在每个基本节点上使用...原创 2018-02-25 22:12:56 · 5984 阅读 · 0 评论 -
QMutex使用详解
QMutex类提供的是线程之间的访问顺序化。QMutex的目的是保护一个对象、数据结构或者代码段,所以同一时间只有一个线程可以访问它。 例如,这里有一个方法打印给用户两条消息: void DebugInfo() { qDebug("ABC"); qDebug("DEF"); }如果同时在两个线程中调用这个方法,结果的顺序将是:ABC ABC DE...原创 2018-02-25 22:12:46 · 30692 阅读 · 0 评论 -
Qt启用外部程序和关闭外部程序
在我们的多方合做的项目中,经常会遇到需要调用第三方外部程序。在Qt中提供了QProcess类,可以用来启动和关闭外部程序,并与之通讯。QProcess继承于QIODevice,因此,我们可以把它当作是一个I/O设备进行读写操作。 具体用法:1.一体式启动:外部程序启动后,将随着主程序的退出而退出 启动方法: void QProcess::start(const QStrin...原创 2018-02-25 22:11:39 · 8870 阅读 · 3 评论 -
C++虚函数和纯虚函数的作用与区别详解
C++中的虚函数和纯虚函数是面向对象编程中多态性的重要特征。它们都允许在派生类中重新定义基类中的成员函数,但是它们之间存在一些关键的区别。虚函数为了重载和多态的需要,在基类中是有定义的,即便定义是空,所以子类中可以重写也可以不写基类中的此函数!纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数!原创 2018-02-23 11:19:10 · 64 阅读 · 0 评论 -
TCP通信细节讲解
所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接,一般需要自己做在线维持。短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接,一般银行都使用短连接。比如http的,只是连接、请求、关闭,过程时间较短,服务器若是一段时间内没有收到请求即可关闭连接。其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态。原创 2018-02-23 11:17:57 · 24 阅读 · 1 评论 -
C++ sizeof()详解
总之,sizeof()是一个非常强大的工具,它在内存管理、性能优化和多平台开发中扮演着关键角色。原创 2018-02-23 11:16:50 · 37 阅读 · 1 评论 -
C语言面试总结
进程中线程同步的四种常用方式:1、 临界区(CCriticalSection) 当多个线程访问一个独占性共享资源时,可以使用临界区对象。拥有临界区的线程可以访问被保护起来的资源或代码段,其他线程若想访问,则被挂起,直到拥有临界区的线程放弃临界区为止。具体应用方式:1、 定义临界区对象CcriticalSection g_CriticalSection;2、 在访问共享资源(代码或变量)之前,先获得临界区对象,g_CriticalSection.Lock();3、 访问共享资源后,则放弃临界区对原创 2018-02-23 11:15:17 · 30 阅读 · 1 评论 -
C++常用几种通讯协议及实际应用解析
HTTP协议通过定义桢格步来判断是否接收完数据:桢开始位桢长度,效验位,数据位桢结束位这样就能不定长传输数据了.HTTP协议通过定义传输结构来判断是否接收完数据帧格步设为长度加内容,先读出长度,再根据长度收内容。自己定义的通讯协议,可以按数据包处理,然后在包头加上数据长度,包尾加上校检码,这样在协议层可以很大程度上保证数据的完整性。原创 2018-02-23 11:13:58 · 33 阅读 · 1 评论 -
C++使用共享内存实现进程间通信
由于事件,信号,互斥对象和文件映射等这些内核对象都共享同一个名字空间,所以如果这个名字和其他一个对象的名称重名的话那么将创建失败。为了共享文件或内存,所有的进程必须使用相同的文件映射的名字或是句柄。使用共享内存或文件的进程必须使用MapViewOfFile函数或MapViewOfFileEx函数来创建一个文件视图。下面我们创建一个名称为"Local\SampleMap"的文件映射对象,并将一个字符串写入到文件映射中。2、将这个对象的文件视图映射到进程的地址空间,然后向视图中写入字符串。原创 2018-02-23 11:12:49 · 41 阅读 · 1 评论 -
C++点操作符和箭头操作符区别
此时返回的是类B的对象,所以调用类B的operator->()成员函数,B的operator->()返回的是指针,所以现在可以使用内置箭头操作符了。对B的operator->()返回的指针进行解引用,然后调用解引用后的对象的成员函数action,此时调用的就是类A的action()。C++中对于类来说,对于其中的成员,用点操作符.来获得,而对于一个指向类对象的指针来说,则用箭头操作符->调用该指针所指向对象的成员。重载箭头操作符必须返回指向类类型的指针,或者返回定义了自己的箭头操作符的类类型对象。原创 2018-02-23 11:11:18 · 63 阅读 · 1 评论 -
C/C++面试经典题型总结(十)
140.一个单向链表,不知道头节点,一个指针指向其中的一个节点,问如何删除这个指针指?????????将这个指针指向的next节点值copy到本节点,将next指向next->next,并随后删除原next指向的节点。141、用指针的方法,将字符串“ABCD1234efgh”前后对调显示#i nclude#i nclude#i ncludeint main()*p1 = *p2;*p2 = c;++p1;–p2;return 0;原创 2018-02-23 11:09:43 · 64 阅读 · 1 评论 -
C/C++面试经典题型总结(九)
131. 一个链表的结点结构int data;Node *next;已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。答案:p2 = head2;while ( p1!= NULL )132.已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序,这次要求用递归方法进行。原创 2018-02-23 11:08:20 · 53 阅读 · 1 评论 -
C/C++面试经典题型总结(八)
121. TCP/IP 建立连接的过程答:在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时,客户端发送连接请求到服务器,并进入SYN_SEND状态,等??????????????第二次握手:服务器收到客户端连接请求,向客户端发送允许连接应答,此时服务器???SYN_RECV???????第三次握手:客户端收到服务器的允许连接应答,向服务器发送确认,客户端和服务器进入 通信状态,完成三次握手122. memset ,memcpy 的区别。原创 2018-02-23 11:06:04 · 49 阅读 · 1 评论 -
C/C++面试经典题型总结(七)
101. winsock建立连接的主要实现步骤?答:服务器端:socket()建立套接字,绑定(bind)并监听(listen),用accept()等待客户端连接, accept()发现有客户端连接,建立一个新的套接字,自身重新开始等待连接。该新产生的套接字使用send()和recv()写读数据,直至数据交换完毕,closesocket()????????????客户端:socket()建立套接字,连接(connect)服务器,连接上后使用send()和recv???????????????????原创 2018-02-23 11:04:36 · 50 阅读 · 1 评论