自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(96)
  • 资源 (7)
  • 收藏
  • 关注

原创 只有激光雷达也能跑gmapping

     Gmapping是基于滤波SLAM框架的常用开源SLAM算法。在ros中使用gmapping需要提供odom和激光信息,但是我手里只有一个rplidar A2,我也想跑gmapping怎嘛办?这里我们可以使用laser_scan_matcher包提供odom信息。     laser_scan_matcher包是增量激光扫描配准工具。 该软件包允许扫描连续的sensor_msgs /...

2018-11-28 21:35:18 5379 41

转载 ubuntu启动丢失解决方法

1、准备ubuntu启用U盘。2、U盘启动,选择试用ubuntu,进入试用版本后进行联网。3、打开终端,输入命令,添加boot-repair所在的源:sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update回车4、再输入sudo apt-get install -y boo...

2018-11-20 17:00:51 2045 1

原创 qt修改图片为圆形-用于头像功能

在这篇文章之前首先介绍一下百度上找到的方法:QPixmap pixmapToRound(QPixmap &src, int radius){ if(src.isNull()) { return QPixmap(); } QPixmap pix(src.width(), src.height()); pix.fill(Qt::transparent); //设置图片透明 QPainter painter(&pix); ...

2022-04-24 18:02:25 1638 1

原创 硬盘的寻址方式

何为寻址?也就是说硬盘存取、读取数据时需要定位到数据所在的物理地址,也就是说需要再硬盘上找到对应的柱面、磁头以及对应的扇区。 1、CHS寻址模式:只要确定柱面号、扇区号和磁头号就能唯一的访问到存储在某一位置的数据,也就是说通过chs寻址可以唯一的定位到具体扇区。早期磁盘一个磁道上分63个扇区,物理磁头最多16个(也就是8个盘片)。CHS是一个三元组,组成如下:1.一共24个bit位。2.其中前10位表示cylinder,中...

2021-10-30 11:20:23 5739

原创 硬盘的基础知识

1、盘片:盘片(disk)是硬盘中承载数据存储的介质。盘片的表面涂有磁性物质,这些磁性物质用来记录二进制数据。因为正反两面都可涂上磁性物质,故一个盘片可能会有两个盘面。一个磁盘(如一个 1T 的机械硬盘)由多个盘片(如下图中的 0 号盘片)叠加而成。 2、磁道和扇区:盘片上以特殊形式磁化的区域。每一个磁道又按512个字节为单位划分为等分,叫做扇区 。硬盘的读写以扇区为基本单位。 3、柱面:硬盘通常由重...

2021-10-30 10:38:12 2070

原创 vs莫名其妙断点失效的一种解决方法

最近我的vs莫名其妙断点失效,变成了空心黄色感叹号的样式。最初以为是编译问题,遂重编译,尝试几次后均无果。 后来通过svn发现我这边都是tab符号,而svn上面的代码都是空格符。于是在Tools->Options->Text Editor->C/C++->Tabs设置为Insert spaces。 设置好以后再回到代码界面选择所有后点击ALT+F8。然后重编译就好了。 当然这只是其中一种问题的归纳总结,vs断点...

2021-08-09 16:22:40 2039

原创 使用c++ winhttp实现post请求

winhttp是windows网络库,要测试自己写的post请求是否有效,首先得在postman上面建立一个可用的接口。我的如下。代码思路如下: 1、首先使用WinHttpCrackUrl拆解链接,后面会使用到拆解出来的信息。 2、再使用WinHttpOpen初始化 3、WinHttpSetTimeouts设置超时,这一步可有可无。 4、WinHttpConnect链接到目标,这里就需要使用拆解出来的信息了 5、WinHttpOpenRequest创...

2021-05-26 14:02:57 4640

转载 GPT 分区详解

保护MBR保护MBR包含一个DOS分区表(LBA0),只包含一个类型值为0xEE的分区项,在小于2TB的磁盘上,大小为整个磁盘;在更大的磁盘上,它的大小固定为2TB。它的作用是阻止不能识别GPT分区的磁盘工具试图对其进行分区或格式化等操作,所以该扇区被称为“保护MBR”。实际上,EFI根本不使用这个分区表。EFI部分EFI部分又可以分为4个区域:EFI信息区(GPT头)、分区表、GPT分区、备份区域。EFI信息区(GPT头)起始于磁盘的LBA1,通常也只占用这个单一扇区。其作用是定义

2021-01-07 17:57:56 7318

转载 MBR磁盘结构

硬盘刚买来使用时需要经过分区然后格式化才能够使用,硬盘经过分区后,分区软件便会写一个主引导扇区,这个扇区位于硬盘的 0 磁道 0 柱面第1扇区(即0区)(注意:该扇区为隐含扇区,0道0面的全部扇区均为隐含扇区,普通的磁盘访问命令无法直接访问,同时该磁道的其他62个扇区也是隐含的,因此有引多系统引导程序就把自己的程序代码放在其他隐含扇区,有些引导区病毒也把自己的代码放在其他隐含扇区。)。在该扇区512字节中,硬盘的主引导记录区MBR (Main Boot Record)只占用了前 44...

2021-01-07 17:36:50 559 1

原创 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符

输入两个字符串,从第一字符串中删除第二个字符串中所有的字符样例样例 1:输入: str=”They are students”,sub=”aeiou”输出: ”Thy r stdnts”注意事项1≤len(str),len(sub)≤10​5首先拿到题,这里有一个不成熟的常规方案,就是挨着遍历两个字符串,找到相同的就删掉。但是时间复杂度太高,不优秀。如下:class Solution {public: /** * @param str: The ...

2020-10-27 17:13:47 1789

原创 windows窗口如何在软件已经运行了的情况下再次点击exe,该窗口置顶。

大部分软件都会有这样一个需求,软件在运行中,再次点击exe或者快捷方式让该软件窗口置顶。 最简单的方法就是调用windows api: HWND hWnd = ::FindWindow(NULL, _T("你的软件名称")); //通过窗口名称找到句柄 if(hWnd != NULL) ::SetForegroundWindow(hWnd); //置顶...

2020-08-26 18:39:10 1521

原创 qt获取剩余空间最大的磁盘

思路:先获取所有磁盘号,再获取它的剩余空间,将磁盘号和剩余空间放入到map当中。最后遍历map找到剩余空间最大的那个。 //获取所有磁盘并将剩余空间放到map中去 QFileInfoList list = QDir::drives(); QMap<quint64, QString> diskmap; for (int i = 0; i < list.count(); i++) { QString str = list....

2020-08-13 09:54:48 2003

原创 重写QTreeWidget,为其添加平滑滚动效果。

实现思路通过定时器溢出,令滚轮事件微微滞后达到平滑效果。定时器溢出是需要时间的,无法立马处理完所有的滚轮事件,所以干脆自己复制一个滚轮事件lastWheelEvent,然后计算每一次滚动需要移动的距离和步数,将这两个参数绑定在一起放入队列中。定时器每次溢出时就将所有未处理完的事件对应的距离累加得到totalDelta,每个未处理事件的步数-1,将 totalDelta 和 lastWheelEvent 作为参数传入QWeelEvent的构造函数,构建出真正需要的滚轮事件e并将其发送到app的事...

2020-08-03 14:32:03 1833

原创 qt窗口在windows系统下完美实现边框阴影

哈喽,好久不见!今天要分享的内容是qt编写的窗口在windows系统下如何完美实现窗口边框阴影。 qt虽然自带阴影类QGraphicsDropShadowEffect,但是它的原理是需要两层widget,上面一层显示窗口,下面一层作为阴影。但是,如果产品经理反复横跳,刚开始不要阴影,后来又提出需求了,怎么办?这时你的窗口布局什么的全都弄好了,又不好修改。如何做到想加就加,想不要就不要呢?请往下看。 我们这里是使用的windows api做的,所以做全平台的就不能帮助啦。 ...

2020-07-22 14:57:55 3280 6

原创 Xcode10 出现 String file not found

在低版本的xcode中开发软件的时候编译都没有问题,但是升到xcode10以后却出现string file not found。这就太不科学了,因为string可是c++里面的,并不是自己的。 so, 解决办法是: 1.在Targets -> “Build Phases” -> “Link Binary with Libraries” 中添加 libc++....

2020-04-15 16:13:24 3141 3

原创 c++获取mac操作系统的版本号

最近项目需要判断mac系统是否低于10.15.但是一直不知道怎么获取,这次记录一下获取方式。 首先Qt当中有一个QSysInfo类,按道理是可以获取到系统版本的。但是我们看下面这个函数,它的返回值MacVersion是一个枚举,这个枚举最多能获取到10.12的系,显然不符合我们的要求。 所以,我们只有另辟蹊径,幸好在mac下有utsname,它可以获取到一个和系...

2020-03-18 17:48:32 2144 1

原创 Qt练手小项目之颜色提取器

疫情结束,学习先行。今天的Qt练手小项目为颜色提取器。这个小应用相当简单,左侧是显示鼠标所在位置的颜色,右侧三个数值表示的是鼠标所在位置颜色的16进制值、RGB值和鼠标位置坐标。截图如下: 重要代码解析如下: 首先是获取鼠标位置,这里我们使用QCursor::pos()获取,然后将位置值传给第三个输入框。 QPoint mousePos ...

2020-03-16 10:19:46 1646

原创 OpenGL初探

疫情结束,学习先行。从今天开始就来学习OpenGL 在开始这段旅程之前我们先了解一下OpenGL到底是什么。一般它被认为是一个API(Application Programming Interface, 应用程序编程接口),包含了一系列可以操作图形、图像的函数。然而,OpenGL本身并不是一个API,它仅仅是一个由Khronos组织制定并维护的规范(Specification)。...

2020-03-02 18:19:33 571

原创 QWidget如何exec

exec()方法是QDialog类的一个方法,其作用是: Shows the dialog as a modal dialog, blocking until the user closes it. The function returns a DialogCode result.If the dialog is application modal, users cannot...

2020-01-16 11:47:13 4815

原创 设计模式之装饰模式

装饰模式(Decorator),动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。 结构图如下: 下面就使用一个具体的代码来举例子:我们假设要做一个手机,首先创建一个手机基类,实现手机的通用基本功能,Phone类就相当于Component;然后不同的手机类型实现其具体的功能,Nokia类和iPhone类就相当于ConcreteDecor...

2020-01-07 22:02:58 573

原创 通过QMovie的方式在按钮上显示GIF

笔者最近有一个需求,就是在按钮上显示一个转圈的gif来表示正在发送的状态。但是就这么一个小按钮,我是不想单独写一个类来重写paintEvent重绘的。所以有了以下方式: 即:在按钮上放一个label,通过label去显示一个movie。只需要在按下按钮的槽里面让movie start即可实现,但又不会遮住按钮,使按钮按不到。 QVBoxLayout* layout = ...

2019-12-19 18:02:56 1081

原创 QStrting正则式查找ip地址

QString filePath = GetFilePathFromUrl(url); //获取到一个ip QRegExp rx2("^([1]?/d/d?|2[0-4]/d|25[0-5])/.([1]?/d/d?|2[0-4]/d|25[0-5])/.([1]?/d/d?|2[0-4]/d|25[0-5])/.([1]?/d/d?|2[0-4]/d|25[0-5]...

2019-12-19 11:08:06 785

原创 qt快速缩放图片却保持精度

Qt的QImage和QPixmap类都提供了一个scaled方法来缩放图片,该方法有个transformMode参数为缩放所使用的方法,它有两个方法为指定快速缩放(FastTransformation)”还是”平滑缩放(SmoothTransformation)。其中快速缩放速度快但是缩放失真大,平滑缩放失真小但是速度慢,特别是质量较高的图片时,速度非常不理想。 为此有人说到一个名...

2019-12-13 10:00:47 5446 5

原创 QPaintDevice: Cannot destroy paint device that is being painted

在paintEvent中,使用QPainter * 绘制图像出现此问题。解决:1、改为不使用QPainter指针。2、添上 save()和restore()函数 QPainter painter(this); painter.save(); painter.drawPixmap(rect(), QPixmap::fromImage(image), QRec...

2019-11-29 14:00:47 3434

原创 Two or more files with the name of moc

在vs上开发Qt程序会因为qt插件的设置导致一些问题warning MSB8027: Two or more files with the name of moc_Geometry.cpp will produce outputs to the same location. This can lead to an incorrect build result. The files ...

2019-11-26 16:51:00 1076

原创 Qt让窗口显示在最前面,but不是霸道的总在最前

我有一个需求是点击本窗口的一个按钮,另一个窗口就跳到最前面。but尝试了activeWindow,show,showNormal,showMaximized 等函数还是不行。网上有方法设置窗体的windowFlags,具体方法为: 1 2 pMainForm->setWindowFlags(pMainForm->windowFlags()...

2019-11-05 18:00:59 12679 6

原创 TightVNC从win远程mac

实际工作当中或多或少需要用到远程软件,远程最出名和最好用的软件当属Teamviewer。but,这玩意儿要收费。那么有免费的远程软件吗?当然,TightVNC就是这么一款开源且免费的软件。 收费有收费的好处,TeamViewer是真的好用,不卡顿又能远程控制,远程传输。当然,TightVNC也有上述功能,唯一的缺点就是卡顿,延迟有点高,往往你操作以后需要等一下才会有响应。 ...

2019-11-04 14:27:02 2640

原创 Qt之mac上如何防止QTreeView接收焦点时显示默认蓝色边框

有时候我们需要通过键盘接收焦点,目的是通过ctrl+a或者delete按键提供全选和删除的快捷方式。这时我们就需要设置QTreeView接收焦点:ui->treeView->setFocusPolicy(Qt::StrongFocus); 但是,一旦接收焦点,在mac上QTreeView就会画一个蓝色的默认边框(真的很丑)。 为解决这个问题:ui->t...

2019-11-01 11:09:06 1223

原创 std::string、QString和const char*的互相转换

std::string、QString和const char*常常需要互相转换,可以比作刚需哈哈哈哈。这里就做一个互相转换的记录,方便自己也方便大家。 1、std::string转QString QString有一个静态函数QString::fromStdString(),专门用于接收std::string。 2、std::string转const char*...

2019-09-02 10:54:26 5303

原创 华为荣耀9x如何安装谷歌框架

华为系列手机原本自带谷歌框架,但据说最新的EMUI9在低端机中已经不支持谷歌框架了。花粉俱乐部中有其他机型的朋友说使用官方的gms安装器可以安装,但亲测荣耀9X不可以。作为一个重度谷歌用户来说,没有谷歌是不可能的。 so,这里记录一下华为荣耀9X(EMUI9)如何安装谷歌框架。 转到https://www.lzplay.net 下载并运行该应用...

2019-08-22 13:59:04 40072 2

原创 设计模式之装饰模式

装饰模式(Decorator Pattern)允许向一个现有的对象添加新功能,同时又不改变其结构。这种类型的设计模式属于结构型模式(结构型模式设计,它关注类和对象的组合。继承这一概念被用来组合接口和定义组合对象获得新功能的方式。它包括以下几种具体的设计模式:适配器模式、桥接模式、过滤器模式、组合模式、装饰模式、外观模式、享元模式和代理模式。),它是作为现有的类的一个包装。这种模式创建了一个...

2019-08-14 13:40:14 584

原创 Error 1 error PRJ0019: A tool returned an error code from "Moc'ing xxxx.h..."

vs开发qt不像qt_creator那样方便,其中一个方面就是在mocing时如果发生错误,只会显示Error 1 error PRJ0019: A tool returned an error code from "Moc'ing xxxx.h..." 这一句,根本不能定位问题发生的位置。 在此情况下需要借助于命令行来定位问题。 首先打开cmd,进入该.h文件所...

2019-07-15 11:08:43 1890

原创 设计模式之策略模式

策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。 如下图所示:Stragegy类,定义所有支持的算法的公共接口ConcreteStrategy,封装了具体的算法或行为,继承于StrategyContext,用一个ConcreteStrategy来配置,维护一个对Strategy对象的引...

2019-06-27 23:11:29 578

原创 Qt按键事件,选中所有项

void QAbstractItemView::keyPressEvent ( QKeyEvent * event ) [virtual protected] 这是Qt的键盘事件函数,可以响应当前widget的按键事件。 说明一下:我是使用的自定义视图,在视图当中使用keyPressEvent()函数。 要响应按键,首先需要调用setFocusPolic...

2019-06-25 17:34:22 1511

原创 设计模式之简单工厂模式

简单来说,简单工厂模式就是使用一个单独的类(工厂)来控制其他类的实例化。 按照百度百科来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 ...

2019-06-17 21:55:52 826

原创 Qt信号槽传递自定义结构体

Qt的信号和槽可以传递int、double等c++常用类型变量,也可以传递QVector、QMap等Qt的容器类(当然也可以传递Qt定义的类型)。 那么Qt的信号和槽如何传递自定义的结构体呢。 首先在定义结构体的同时需要使用Q_DECLARE_METATYPE。通过这个宏定义可以将自定义的类型注册到Qt的元类型中,从而被Qt识别。 其次在信号端发射的信号类型应该是...

2019-05-26 15:44:18 6966 1

转载 linux终端如何嘲笑使用者???

看到这篇文章的时候,突然想到一个朋友。我有一个做机器人方向的朋友,他常常爱在项目中打印一些嘲笑使用者的话。看到这篇文章的时候,我差点就笑出了猪叫声。该开源项目的发起人多像我那个朋友。。。于是转载下来,娱乐娱乐。 今天要介绍的,是一个非常有趣的 CLI 工具,这个工具可以实现当你在终端输错命令时,会随机回复一句嘲笑你的话。虽然是嘲笑人的工具,但良许觉得还是挺有趣的,给枯燥的工作带来...

2019-04-28 16:37:04 264

原创 Qt下获取当前目录size

最近在项目当中需要实现转存软件媒体目录功能,在实现此功能时,需要判断所选取的盘是否拥有足够空间大小来存储目标目录,因此就需要对比目标目录size和所选盘符剩余空间。在此记录我用于获取目标目录size的功能。 实现比较简单,首选我们获取到目标文件夹时,通过递归的方式获取到目标文件夹下所有的文件和目录,针对里面的文件进行计算其size,总和即目标目录的size。unsigned ...

2019-04-28 14:03:11 1335

原创 Qt练手小项目之绘制动态柱状图

首先附上效果图。Qt版本4.8.6,IDE:vs2008.柱状图可根据数据变化实时增减,支持修改刻度值范围,修改柱状图颜色和背景颜色。实现起来并不复杂,使用的都是一些非常常见的Qt类和函数,下面就来看看主要代码。 首先,背景的绘制并没有使用QSS,这样可以实时更改背景色。背景使用渐变,很简单。 其次是刻度线和刻度值的绘制稍微麻烦一点,因为刻度线要分别绘制单位刻度线,...

2019-04-09 14:38:14 5291

原创 QRect和QRectF

在Qt的使用过程中不免要与QRect和QRectF打交道。 但是,QRect在数据存储表示上有一个很大的“历史遗留问题”! 引申自QtAssistent对QRect的一段话: 注意,由于历史原因,bottom()和right()函数返回的值偏离了矩形的真正的右下角:right()函数返回left() + width() - 1, bottom()函数返回top...

2019-04-08 15:23:17 28085 1

GetColor.zip

Qt编写的颜色提取器练手小项目,代码量少,界面设计简单,适合初学者练习使用。IDE为vs2013,Qt版本为5.6.3

2020-03-16

DecoratorSuit.zip

  装饰模式(Decorator Pattern)允许向一个现有的对象添加新功能,同时又不改变其结构。该Demo是装饰模式的一个小Demo。环境:vs2008。语言:c++

2019-08-14

StrategyDemo.zip

  策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少各种算法类与使用算法类之前的耦合。其中Strategy类层次为Context类定义了一系列可供重用的算法或行为。继承有助于析取出这些算法中的公共功能。策略模式中的每个算法都有自己的类,可以通过自己的接口单独测试。当不同的行为堆砌在一个类当中时,就很难避免使用条件语句来选择合适的行为。将这些行为封装在一个个独立的Strategy类中,可以在使用这些行为的类中消除条件语句。

2019-06-27

FactoryMethodPattern.zip

简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

2019-06-17

基于Qt4的柱状图绘制源码

qt练手小项目的源码。绘制动态柱状图,柱状图能够根据数据变化实时上升或下降。支持设置刻度值范围、背景色和柱状图颜色。qt版本:4.8.6;IDE:vs2008

2019-04-09

AnimationButton

继承QWidget利用重写QWidget的一些事件函数模拟出动态按钮的效果。可以学到1、QWidget的enterEvent、leaveEvent、paintEvent的重写;2、qt设计师的使用;3、初步接触qt动画;4、背景样式qss。

2019-04-08

cartographer建图的lua配置文件

本文档为谷歌的cartographer建图lua文件。该lua文件是基于真实机器人建图,经过修改可以应用到任何差速机器人上。不需要修改或者只需要修改机器人基座标即可使用。

2018-09-10

空空如也

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

TA关注的人

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