自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 资源 (1)
  • 收藏
  • 关注

原创 设计模式之装饰者模式C++实现

参考书籍《Head First设计模式》设计模式和设计原则 装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者模式提供了比继承更有弹性的替代方案。装饰者模式遵循的设计原则:类应该对扩展开放,对修改关闭。装饰者模式中的类 装饰者模式中的类如下图,图片链接23种设计模式-装饰器模式_老杨叔叔-CSDN博客,侵删。其中Component抽象组件类,即被装饰的类,每个组件都可以单独使用,或者被装饰者包起来使用。...

2021-09-28 22:04:49 40

原创 设计模式之观察者模式C++实现

参考书籍《Head First设计模式》设计模式和设计原则观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。观察者模式遵循的设计原则:观察者模式中的类提到观察者模式,常常会看到类似于下面的图。下图中包含了策略模式中用到的类,其中Stategy策略抽象类,定义了算法的接口(下面案例中的FlyBehavior和QuackBehavior是策略抽象类)。ConcreteStrategy具体策略类,实现具体算法(下面案例中的FlyWith

2021-09-27 15:27:06 40

原创 设计模式之策略模式C++实现

参考书籍《Head First设计模式》设计模式和设计原则策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。策略模式采用的设计原则:1、找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。2、针对接口编程,而不是针对实现编程3、多用组合少用继承策略模式中的类提到设计模式,常常会看到类似于下面的图。下图中包含了策略模式中用到的类,其中Stategy策略抽象类,定义了算法的接口(下面案例中的FlyBeh

2021-09-24 22:27:40 51

原创 Unknown module(s) in QT: webenginewidgets原因及解决办法

今天学习时,想使用QWebEngineView做一个显示网页的小项目。在.pro文件中加入QT += webenginewidgets这句后,编译一直报下面错误Project ERROR: Unknown module(s) in QT: webenginewidgets 查资料常见原因以下三种:1)QT版本过低。需要QT版本号为QT5.5版本及其以上。从Qt5.5开始,Qt WebKit模块被废弃,取而代之的是Qt WebEngine模块。且只有MSVC才支持该...

2021-06-27 18:52:38 617 5

原创 我的QT Creator学习笔记(三十六)——进程和线程

参考文献:《Qt Creator 快速入门》第三版 霍亚飞编著一、进程1.1 进程相关类、接口、信号等在当前的应用程序中可以调用外部的程序来实现一些功能,这就会使用到进程。Qt的QProcess类用来启动一个外部程序(进程)并与其进行通信。 要启动一个进程可以使用QProcess::start()函数,将程序名称和运行这个程序所要使用的命令行参数作为该函数的参数。 执行完start()函数后QProcess进入Starting状态,当程序已经...

2021-06-26 16:27:50 49

原创 我的QT Creator学习笔记(三十五)——网络编程之UDP与TCP

参考文献:《Qt Creator 快速入门》第三版 霍亚飞编著1、UDPUDP(User Datagram Protocol,用户数据报协议)是一个轻量级的、不可靠的、面向数据报的、误连接的协议,用于可靠性不是非常重要的情况。UDP一般分为发送端和接收端。QUdpSocket类用来发送和就收UDP数据报,继承自QAbstractSocket。这里的socket就是所谓的“套接字”,简单来说“套接字”就是一个IP地址加一个port端口号。1.1UDP编程示例下面是一个UDP编程示例..

2021-06-14 19:50:39 78 4

原创 我的QT Creator学习笔记(三十四)——网络编程之HTTP与FTP

Qt中的Qt Network 模块用来编写基于TCP/IP的网络程序,其中提供了较低层次的类,比如QTcpSocket、QTcpServer和QUdpSocket等,来表示低层次的网络概念;还有高层次的类,比如QNetworkRequest、QNetworkReply和QNetworkAccessManager,使用通用的协议类来执行网络操作;...

2021-06-13 13:46:40 36

原创 基于百度地图sdk的地图app开发(七)——导航和模拟导航

这是基于百度地图sdk的地图app开发系列博客第七篇代码仓库位置:https://github.com/YanhuiLu89/lmap.git上一篇 基于百度地图sdk的地图app开发(六)——路线规划因为本人是做C++开发,android和java都不熟,这方面知识有说错或者不好的习惯,欢迎赐较。官方参考文档:Android导航SDK一、工程配置1.1 在AndroidMainfest.xml中加入以下权限(指导文档里的权限比这多,前面几个权限在前面几篇文章里,使用百度地.

2021-05-30 12:37:12 277 4

原创 基于百度地图sdk的地图app开发(六)——路线规划

这是基于百度地图sdk的地图app开发系列博客第五篇代码仓库位置:https://github.com/YanhuiLu89/lmap.git上一篇 基于百度地图sdk的地图app开发(五)——poi检索因为本人是做C++开发,android和java都不熟,这方面知识有说错或者不好的习惯,欢迎赐较。路线规划通俗讲,就是从A点到B点计算1条或多条路径。百度地图SDK支持步行路线规划、骑行路线规划、驾车路线规划、跨城公交路线规划、市内公交路线规划、室内路线规划。从官方指导文档看每一种路线.

2021-05-20 18:18:15 723 11

原创 glfwCreateWindow返回NULL问题

opengl学习中遇到glfwCreateWindow返回空问题代码如下 int ret=glfwInit(); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLEW_VERSION_MINOR, 3); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); GLFWwindow* window = glfwCreateW

2021-05-13 17:17:30 101

原创 基于百度地图sdk的地图app开发(五)——poi检索

基于百度地图sdk的地图app开发(五)——导航与模拟导航

2021-05-01 17:13:41 718 5

原创 基于百度地图sdk的地图app开发(三)——优化地图显示

这是基于百度地图sdk的地图app开发系列博客第三篇代码仓库位置:https://github.com/YanhuiLu89/lmap.git上一篇 基于百度地图sdk的地图app开发(二)——地图显示

2021-04-17 13:40:55 134

原创 基于百度地图sdk的地图app开发(四)——显示地图定位

这是基于百度地图sdk的地图app开发系列博客第四篇代码仓库位置:https://github.com/YanhuiLu89/lmap.git上一篇 因为本人是做C++开发,android和java都不熟,这方面知识有说错或者不好的习惯,欢迎赐较。官方参考文档显示定位地图默认是在北京天安门位置,我们要把它定位到当前我们的实际位置。1 配置AndroidManifest.xml文件加入权限声明,如下<!-- 这个权限用于进行网络定位 --><us.

2021-04-17 13:38:53 200 4

原创 我的QT Creator学习笔记(三十三)——Qt中连接与使用数据库

我的QT Creator学习笔记(三十三)——Qt中连接与使用数据库

2021-04-10 20:44:29 164

原创 基于百度地图sdk的地图app开发(二)——地图显示

基于百度地图sdk的地图app开发(二)——地图显示

2021-04-09 19:46:45 240

原创 基于百度地图sdk的地图app开发(一)——开发环境配置与sdk下载

基于百度地图sdk的地图app开发(一)——开发环境与sdk下载

2021-04-07 21:47:43 279

原创 我的QT Creator学习笔记(三十二)——模型/视图编程之委托类

我的QT Creator学习笔记(三十)——模型/视图编程之委托类

2021-04-03 12:48:05 36

原创 我的QT Creator学习笔记(三十一)——模型/视图编程之视图类

我的QT Creator学习笔记(三十)——模型/视图编程之视图类

2021-03-28 18:39:32 50 1

原创 我的QT Creator学习笔记(三十)——模型/视图编程之模型类

Qt中的模型/视图架构就是用来实现大量数据的存储、处理及其显示的。模型/视图架构MVC(Model-View-Controller)是一种起源于Smalltalk的设计模式,经常用于创建用户界面。MVC包含了3个组件:模型(Model)是应用对象,用来表示数据;视图(View)是模型的用户界面,用来显示数据;控制(controller)定义了用户界面对用户输入的反应。模型/视图框架中的众多类可以分为3组:模型、视图和委托,它们之间使用信号和槽来实现通信:》当数据源的数据发生改变时,模型发出信

2021-03-27 22:03:57 40

原创 我的QT Creator学习笔记(二十九)——音频录制

可以使用QAudioRecorder类的audioInputs()来获取所有可用的音频输入设备名称,

2021-03-14 20:56:21 53

原创 我的QT Creator学习笔记(二十八)——使用Qt操作相机

一、使用到的类:1、QCameraInfo:用来查询系统当前可用的相机设备,其常用函数及其功能如下图2、QCamera:该类提供了操作相机设备的诸多接口,常用接口如下图 3、QCameraImageCapture:这是一个图像录制类,与QCamera配合可以进行拍照。使用capture()可以捕获图片并保存的文件,setEncodingSettings可以进行图像编码设置。4、QMediaRecorder类用来记录媒体内容,与QCamera一起使用可以进行视频录制。通过.

2021-03-14 17:55:03 142

原创 我的QT Creator学习笔记(二十七)——播放视频

我的QT Creator学习笔记(二十六)——播放视频

2021-03-07 15:52:20 91

原创 我的QT Creator学习笔记(二十六)——播放音频QMediaPlayer和QSoundEffect

3D绘图效果没出来我的QT Creator学习笔记(二十五)——播放音频

2021-03-05 19:00:47 146 1

原创 我的QT Creator学习笔记(二十五)——使用QOpenGL绘制图形

Qt Widgets模块中的QOpenGLWidget类提供了一个可以渲染OpenGL图形的部件,通过该部件可以轻松地将OpenGL图形整合到Qt应用程序中。OPenGLWidget类提供了3个方便的虚函数,可以在子类中重新实现它们来执行典型的OpenGL任务。initializeGL():设置OpenGL资源和状态。该函数只在第一次调用resizeGL()或paintGL()前被调用一次。 resizeGL():设置OpenGL的视口、投影等。每次改变大小时都会调用该函数。 paintGL(...

2021-02-17 17:42:24 189

原创 我的QT Creator学习笔记(二十四)——使用动画框架实现动画

The Animation Framework动画框架的目的是提供一种简单的方法来创建平滑的、具有动画效果的GUI界面。该框架是通过控制Qt的属性来实现动画的,它可以应用在窗口部件和其他QtObject对象上,也可以用在图形视图框架中。动画框架主要包括下面几个类一、属性实现动画 QPrrpertyAnimation类可以对Qt属性进行插值,如果一个值要实现动画效果,则就要使用这个类。新建Qt空项目,项目文件中增加“QT += widgets”,添加main.cpp文件,其示例代码如...

2020-11-21 16:26:22 55 1

原创 无人驾驶汽车是如何工作的

参考优达学城自动驾驶入门课程简单来说自动驾驶汽车包括以下5个部分计算机视觉、传感器融合、定位、路径规划、控制。 计算机视觉即摄像头获得的图像,传感器融合是采集来自其他传感器(比如雷达、激光雷达)的数据,这两者的数据,可以对汽车所处环境有深刻的认识。比如摄像头数据可以看清前面有个物体,而雷达数据可以让你知道这个物体距你有多远。认识了所处环境之后结合高精度地图以及定位算法定位汽车所处的位置。知道了位置之后就是从当前位置规划一条到目的地的道路,即路径规划。然后控制即松刹车、油门大小以及方向盘控等...

2020-11-18 21:55:52 134

原创 我的QT Creator学习笔记(二十三)——图形视图

Qt提供了图形视图框架(Graphics View Framework)、动画框架(The Animation Framework)和状态机框架(The State Machine Framework)来实现更加高级的图形和动画应用。一、图形视图框架的结构图形视图框架提供了一个居于图形项的模型视图编程方法,主要由场景、视图和图形项三部分组成,这三部分分别由QGraphicsScene、QGraphicsView和QGraphicsItem这3个类来表示。多视图可以看成一个场景,场景中包含各种各样几何

2020-11-14 21:14:56 84

原创 我的QT Creator学习笔记(二十二)——绘制基本图形和填充

Qt中和绘图相关的三个类是QPainter、QPainterDevice和QPaintEngine。QPainter可以在继承自QpainterDevice类的任何对象上进行绘制操作。QPainter一般在一个部件绘制重绘事件Paint Event的处理函数paintEvent()函数中进行绘制。首先创建QPainter对象,然后进行图像绘制,最后销毁QPainter对象。另外还有几个类经常用到。QPen类,为QPainter提供画笔来绘制线条和形状的轮廓。QBrush类提供了画刷来对图图形进行填充

2020-08-23 11:53:35 436

原创 我的QT Creator学习笔记(二十一)——Qt国际化和Qt插件

一、国际化Qt可以使用Qt Linguist工具完成应用程序的翻译工作,生成.qm文件,然后在不同情况下为应用程序安装不同qm文件,实现不同环境不同语言版本。新建Qt Widget应用。在设计模式下添加"&File“菜单,再为其添加一个”&New"子菜单,并设置快捷键Ctrl+N.然后在构造函数中添加以下代码。 QLabel* label=new QLabel(this); label->setText(tr("hello Qt")); label-

2020-08-16 21:08:16 133

原创 我的QT Creator学习笔记(二十)——特殊效果窗体

一、不规则窗体qt中提供了部件遮盖mask来实现不规则窗体。下面例子给窗口设置遮盖。创建基于Qt Widgets的应用,取名mymask。向项目中添加资源文件resouce,向资源文件中添加图片文件bg.png。如下图在构造函数里添加以下代码 QPixmap pix; //加载图片 pix.load(":/image/bg.png"); //设置窗口大小为图片大小 resize(pix.size()); //为窗口设置遮掩 setM

2020-08-15 22:07:55 80

原创 C++多线程死锁问题与解决方案

一、死锁问题当一个多线程程序中存在多个互斥资源时,就有可能造成死锁。比如有两个线程T1和T2,两个互斥锁A和B,线程T1拿到了锁A,在等待锁B,一直到等到B才能往下执行,释放锁A,而此时线程T2拿到了锁B,在等待锁A,一直到等到A才能往下执行,然后释放锁B。即线程T1和T2在等对方持有的锁,又都不肯释放锁,这时候线程T1和T2就会一直等下去了,在等待,永远在等待。这就是死锁。下面是死锁代码的示例#include <iostream>#include <thread>

2020-08-09 18:37:17 1376

原创 C++多线程线程同步问题

一、进程线程概念进程通常被定义为一个正在运行的程序的实例,是一个程序在其自身地址空间中的一次执行活动。进程从来不执行任何东西,它是线程的容器。若要进程完成某项操作它必须拥有一个在它的环境中运行的线程,此线程负责包含执行包含在进程地址空间中的代码。现存由线程的内核对象和线程栈两部分组成。操作系统用线程的内核对象来管理线程,内核对象也是系统用来存放线程统计信息的地方。线程栈用来维护程序在执行代码是所需要的所有函数参数和局部变量。二、C++中线程创建函数使用系统提供的API函数CreateT.

2020-08-08 18:20:32 319 1

原创 我的QT Creator学习笔记(十九)——Qt样式表

Qt样式表的术语和语法规则与HTML CSS基本相同。一、样式规则样式表包含了一系列的样式规则,每个样式规则由选择器(Sekector)和声明(declaration)组成。选择器制定了受规则影响的部件,声明指定了这个部件上药设置的属性。例如:QPushButton{color:red}这个规则指定了QPushButton和它的子类使用红色作为前景色。多个选择器(用逗号隔开)可以指定相同的声明,如下QPuButton,QLineEdit,QComBox{color:red}声明部分也可以

2020-08-02 19:39:26 323

原创 QT背景图片不显示解决办法

QT中设置了窗口的背景图片但是不能显示解决办法:去Qt的项目中构建设置中,Shandow build勾选项去掉。实现换肤

2020-08-02 17:28:05 2398 2

原创 linux学习一在window10中安装centos7.0环境

windows10(专业版) 的windos 管理工具中的 Hyper-V管理器类似于Vmware虚拟机,可以很方便的安装linuex环境。准备好centos7文件,下载路径https://mirrors.tuna.tsinghua.edu.cn/centos/7.8.2003/isos/x86_64/CentOS-7-x86_64-Everything-2003.iso一、开启 Hyper-V管理器控制面板-》程序-》启用或关闭Windows功能-》勾选Hyper-V管理器以及Hyper-V服

2020-08-01 19:21:57 274

原创 我的QT Creator学习笔记(十八)——Qt对象模型之属性系统

Qt提供了强大的基于元对象系统的属性系统,可以在运行Qt平台上支持标准C++编译器。要在一个类中声明属性,该类必须继承自QObject类,而且还要在声明前使用Q_PROPERTY()宏。这个宏从我个人的理解,比较像C++中的类模板,通过type和name指定属性后,相当于给该类加了一个成员变量,然后后面的就是读这个成员变量的读、写、重置、限制等附加属性。 Q_PROPERTY(type name (READ getFunction [WRITE setFunction]

2020-07-12 16:55:13 61

原创 我的QT Creator学习笔记(十七)——Qt对象模型之信号和槽机制

Qt在标准C++对象模型的基础山添加了一些特性,形成了自己的对象模型,这些特性有:

2020-07-12 15:44:25 113

原创 我的QT Creator学习笔记(十六)——事件系统定时器事件与随机数

QTimerEvent用来描述一个定时器事件。队医一个QObject的子类,只需要使用Int QObject::startTimer(int interval)函数就可以开启一个定时器。输入参数是毫秒为单位的整数,表明设定的时间。返回值为一个整型值,代表这个定时器的编号。当定时器溢出(即定时时间达到时)可以在timerEvent函数中进行需要的操作。Qt中使用qrand和qsrand两个函数实现随机数。新建Qt Widgets项目mytimerevent继承自QtWidget,类名默认Widget。

2020-07-05 16:21:01 106

原创 我的QT Creator学习笔记(十五)——事件系统之键盘事件

QKeyEvent类用来描述一个键盘事件。QKeyEvent的key()函数可以获取具体的按键,modifiers()函数来获取一些修饰按键,比如Ctrl和Shift等。新建Qt Widgets应用,项目名称为mykeywevent,基类选择QWidget,类名默认Widget。在widget.h中添加函数声明如下protected: void keyPressEvent(QKeyEvent* event); void keyReleaseEvent(QKeyEvent* even

2020-07-05 15:24:43 127

原创 我的QT Creator学习笔记(十四)——事件系统之鼠标事件和滚轮事件

事件系统之鼠标事件和滚轮事件

2020-07-05 12:57:47 155

Qt pop3接收邮件并下载附件程序

Qt pop3自动登陆邮箱接收邮件,并把邮件保存到数据库,附件下载到工程目录。

2019-04-30

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除