- 博客(25)
- 收藏
- 关注
原创 Qt之HTTP简单应用
Qt中使用HTTP类要用到这几个类:QNetworkAccessManager、QNetworkReply和QNetworkRequest。此外,在.pro文件中还要加上 QT += network。QNetworkAccessManager *manager = new QNetworkAccessManager(this);connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(finishedSlot(QNetworkReply
2020-07-26 22:03:02
364
原创 Qt点击按钮弹出菜单
QToolButton *menuBtn = new QToolButton(this);menuBtn->addAction("菜单一");menuBtn->addAction("菜单二");menuBtn->addAction("菜单三");//计算菜单弹出位置connect(menuBtn, &QToolButton::clicked, [=](){ int x = menuBtn->x(); int y = menuBtn->y(); QPoi
2020-07-26 21:57:23
2438
原创 Qt配置文件的简单应用
在Qt中使用配置文件,就要加上头文件//创建配置文件void MainWindow::CreatIni(){ QSettings *configFile = new QSettings("configFile.ini", QSettings::IniFormat); configFile->setVaule("ip/webSever", "127.0.0.1"); d...
2020-07-26 21:55:54
241
原创 Qt 全局单例类
#ifndef APPEVENT_H#define APPEVENT_H#include <QObject>#include <QMutex>#include <memory>#include <QSharedPointclass AppEvent : public QObject{ Q_OBJECTpublic: stati...
2020-06-01 19:38:56
2062
原创 QT的ip地址+端口号正则表达式
参考博客:QT 正则表达式(进阶篇)IP,端口号,文件名,非空格字符的匹配,已验证QRegExp regExpAdd(""\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\:([0-9]|[1-9]\\d|[1-9]\\d{2}|[1-9]\\d{3}|[1-5]\\d{4}|6[0-4]\\d{3}|65[0-4]\\d{2}|655[0-2]\\d|6553[0-
2020-06-01 19:25:58
1477
原创 C/C++报错 error reading characters of string
这是一个很隐蔽的错误这个错误意思就是变量读取到的内存存放的数据类型实际上是字符序列,并不是变量类型所指定的数据类型。出现这种错误的原因一般为:char* buffer = (char*)malloc(sizeof(char) * 1024);char *p = NULL;当buffer中存放的数据字节数超过1024会发生什么事情?是的,p的值被buffer覆盖了,调试时查看p就会发现p不再是NULL,并且报错就是“error reading character of string。”C++
2020-05-27 16:24:42
1989
原创 ZeroMQ发布-订阅模式的应用(C++)
我使用的ZeroMQ版本是4.2.0,应用的是其发布-订阅模式应该知道的细节:PUB-SUB套接字是慢连接,你无法得知SUB是何时开始接收消息的。就算你先打开了SUB套接字,后打开PUB发送消息,这时SUB还是会丢失一些消息的,因为建立连接是需要一些时间的。很少,但并不是零。参考文章:传送门1.传送门2.先看代码,参考该文章:ZeroMQ的订阅发布(publish-subscribe)模式...
2020-04-30 16:23:34
1311
原创 Qt引入ZeroMQ库
ZeroMQ的下载与编译参考文章:关于ZMQ-4.2.3在Windows下载与编译我的VS版本是2013, ZeroMQ版本是4.2.0编译完成后,会在ZeroMQ的目录(我的是D:\libzmq-4.2.0\bin\Win32\Release\v120\dynamic)下生成一个.lib文件和.dll文件(注意这里是生成动态库)。Qt如何引入ZeroMQ库?我的Qt版本是5.6.1做法...
2020-04-24 15:50:10
2799
原创 Qt中的信号与槽
参考书籍:《Qt学习之路》&《Qt Creator快速入门》概述信号和槽用于两个对象之间的通信。信号和槽机制是Qt的核心特征,也是Qt不同于其它开发框架的最突出特征。熟练使用和理解信号槽,能够设计出解耦的程序。信号槽实际就是观察者模式。当某个事件发生时,对象就会发出一个信号(signal)。这种发出是没有目的的,类似于广播。如果有对象对这个信号感兴趣,它就会使用连接(connect)...
2019-12-17 15:23:47
160
原创 Qt事件系统概述
Qt事件系统Qt中的事件事件的处理常用方式事件传递顺序事件过滤器参考书籍:《Qt Creator快速入门》Qt中的事件事件是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的统称。事件的处理常用方式一、重新实现部件的paintEvent()、mouseEvent()等事件处理函数。二、在对象上安装事件过滤器。三、重新实现notify()函数。四、向QApplica...
2019-12-13 16:04:42
256
原创 C++标准库读书笔记:STL之算法
算法(Algorithm)STL提供了一些标准算法,包括查找、排序、拷贝、重新排序、修改、数值运算等基本而普遍的算法。算法并非容器类的成员函数,而是一种搭配迭代器使用的全局函数。这么做有一个重要优势:所有算法只需要实现一份,就可以对所有容器运作,不必为每一种容器量身定制。#include <algorithm>vector<int> coll = {2,5,4,1,...
2019-09-29 13:58:00
195
原创 《图解HTTP协议》读书笔记之一
使用HTTP协议访问Web根据Web浏览器地址栏中指定的URL,Web浏览器从Web服务器端获取文件资源等信息,从而显示出Web页面。Web使用一种名为HTTP(HyperText Transfer Protocal, 超文本协议)的协议作为规范,完成从客户端到服务器端等一系列运作流程。而协议是指规则的约定。可以说,Web是建立在HTTP协议上通信的。HTTP协议通信过程:访问DNS服务器解...
2019-09-13 21:57:26
205
原创 基于Mongoose框架的网页通讯
以前学习C++和Linux的时候,只是单纯的写简单的小程序,所以打算做个项目练习一下,了解一个项目的开发过程和各个组件之间的组合过程。准备Mongoose框架:这个框架用起来很方便,只要把.c文件和.h文件拷到项目文件夹下就可以使用了。我用的6.14版本。MySql数据库:用的5.6.45版本,因为使用C++来做这个项目,所以数据库链接选择了C connector。JsonCpp:Json...
2019-09-12 18:21:25
1800
1
原创 Linux线程控制
什么是线程?为什么有线程?现在计算机已经发展到多处理器,如果一个进程独占CPU的这段时间内,只有一个处理器在运算,势必会造成计算力的浪费。所以多线程机制应运而生。线程是进程内部的控制序列。Linux中用进程来模拟线程,所以线程也叫轻量级进程。线程也有PCB,这多个线程的PCB指向同一个进程的地址空间。所以线程本质上就是在进程地址空间内运行。进程的大部分资源合理分配给每个执行流,就形成了线程执行...
2019-08-08 12:10:02
145
原创 【leetcode】无重复字符的最长子串
题目来源:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/submissions/思路如下:用空string依次读s的每个字符,如果这个字符不在string里,则将这个字符追加到string末尾。如果这个字符出现在这个string里,则将当前s。size()与当前最长子串的长度进行比...
2019-08-03 16:25:03
147
原创 Centos7下误删或覆盖/usr/bin/ld
不小心覆盖/usr/bin/ld后再编译链接时,由于覆盖的文件,发现gcc -o这一步会出现各种奇怪的错误。误删/usr/bin/ld时更会提示:collect2: 致命错误:找不到‘ld’编译中断。解决方法如下:重新安装binutilssudo yum reinstall binutils...
2019-07-29 17:58:30
1054
原创 Linux下的静态编译与动态编译
编译是一个把高级语言写成的代码经过一系列的步骤转换成相应处理器汇编语言的过程。静态编译静态编译是指在链接时把函数库整合到目标代码里面,这样做的优点是静态编译完成后就不再需要外部的函数库来支持了,缺点也显而易见,编译后的程序体量会增大很多,并且如果静态函数库改变了,程序需要重新静态编译。生成静态链接库静态编译自然不可缺少静态函数库(.a),静态函数库由可重定向文件*.o(也叫目标文件)打包而...
2019-07-29 17:42:25
1290
原创 智能指针
智能指针智能指针的使用及原理std::auto_ptrstd::unique_ptr(C++11)std::shared_ptr(C++11)智能指针的使用及原理RAII(Resource Acquisition Is Initialization)是一种利用对象生命周期来控制程序资源的简单基础。在对象构造时获取资源,接着控制对资源的访问使之在对象的生命周期内始终保持有效,最后在对象析构的时...
2019-07-26 14:44:34
106
原创 宏函数
结构体内成员相对于结构体起始地址偏移量:#define offsetOf(structName, memName)\ (int)&(((structName*)0->memName))
2019-07-01 15:19:36
222
原创 C++类型萃取
说到类型萃取,必须先了解模板的特化。模板的特化概念在原模板类的基础上,针对特殊类型所进行特殊化的实现方式。模板特化中分为函数模板特化类与类模板特化。函数模板的特化先创建一个基础的函数模板关键字template后面接<>,尖括号里面为空。函数名后跟一对尖括号,尖括号中指定需要特化的类型。函数形参表:必须要和模板函数的基础参数类型完全相同。类模板的特化类模板的特化又...
2019-06-29 23:05:36
138
原创 C++多态
C++多态概念C++中实现多态的条件重写、同名隐藏与重载多态实现原理多态实现过程:扩展概念多种形态,在完成某个行为时,当不同的对象去完成时会产生不同的形态。多态又分为动态多态和静态多态。静态多态(静态绑定,早绑定):编译器在编译时确定调用哪个函数(体现:函数重载、模板)。动态多态(动态绑定,晚绑定):编译时无法确定具体调用哪个函数,只有在代码运行时才知道具体应该调用哪个函数(体现:虚函数+...
2019-06-23 10:59:20
101
原创 C++继承概述
C++继承概述继承的概念及定义概念继承定义基类和派生类对象赋值继承中的作用域派生类的默认成员函数继承与友元继承与静态成员菱形继承问题虚继承原理继承的概念及定义概念继承(inheritance)机制是面向对象程序设计使代码复用的最重要的手段,它允许在保持原有类特性的基础上进行扩展,增加新特性,从而生成新的类,称为派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。继承...
2019-05-13 13:34:49
135
原创 求两个整型数的平均数
两个整型数据求平均数两数相加除以2这种写法是简单将两个数相加,然后除以2。#include <stdio.h>int main(){ int x = 2; int y = 3; int count = (x+y)/2; printf("%d\n",count); return 0;}这种代码是有弊端的,当x+y的值大于214...
2019-01-08 16:36:27
1884
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人