自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 Ubuntu20.04安装OpenCV3.4.12

进入下面的链接下载源码包zip。

2023-03-30 19:40:43 635 1

原创 gzserver: /build/ogre-1.9-B6QkmW/ogre-1.9-1.9.0+dfsg1/OgreMain/src/OgreNode.cpp:630: virtual void Og

启动gazebo环境的时候报错网上搜索了一圈说是gazebo的版本太低所致,比如我原先的版本是9.0,要升级到11.0才行。可以通过命令行查看gazebo的版本号我的原先版本是9.0,需要卸载9.0重新装11.0才行。

2023-02-06 17:03:11 599 1

原创 机器人xacro设计+gazebo/rviz启动

机器人xacro设计+gazebo/rviz启动

2022-12-05 11:27:59 1418

原创 joint_state_publisher_gui-5] process has died

ubuntu18.04-ros-melodic中,rviz显示模型异常,或者提示rviz No transform from [link1] to [link2],的问题解决

2022-12-04 19:34:10 497

原创 QString转换char*

这样就完成了QString向char*的转化。经测试程序运行时不会出现bug。注意第3行,一定要加上,单独写,不可以str.toLatin1().data()这样一步完成,否则可能会出错。因为char*最后都有一个’\0’作为结束符,而采用QStringtoLatin1()时会在字符串后面加上’\0’。将QString转char*,需要用到QByteArray类,QByteArray类的说明详见Qt帮助文档。.........

2022-07-20 10:58:04 628 1

原创 Qt自动判断文本文件的编码格式(QT自定义文件编辑器)

迅哥说:每个程序员都会遇到乱码问题,只是早晚的事情。(鲁迅:我没说过)问题形容:比如在qt自定义一个文件编辑器,类似于window的记事本,会发现打开不同编码格式的文本文件会乱码。。解决方案:window系统的 txt 文件编码一般有 ANSI 或者 UTF8 格式,其中 ANSI 也就是qt里的 GBK格式。因此,只要我们在打开文本文件时先判断该文件的编码格式,然后qt设置好该编码格式后读取文件即可。1、第一次打开文件2、判断其编码格式3、关闭文件4、再次打开文件5、根据第二步的返回值设置

2022-04-13 14:41:37 5089 1

原创 QT获取发送信号的对象名(qobject_cast、sender、static_cast)

需求分析当某一个Object emit一个signal的时候,它就是一个sender,系统会记录下当前是谁emit出这个signal的,所以在对应的slot里就可以通过 sender()得到当前是哪个对象调用了你的slot,对应的是QObject->d->sender.使用方法多个按键对应一个按键处理槽函数,这时候就需要判断是哪一个按键发出信号触发了槽函数,这时候就可以通过sender的不同来进行不同的处理,以下就是槽函数里获取其发出信号对象的方法QPushButton*editor =

2022-03-28 11:14:32 3599 1

原创 Win10重置网络后wifi没了

原因今天在win10设置里点击了重置网络,电脑重启后WiFi竟然没了?我一度以为自己电脑坏了,因为重装WiFi驱动也没用。。后来查了下原来是重置网络后有一项服务给关了,需要手动开启才行。解决方案键盘通过window + R,打开运行,输入services.msc,在打开的服务列表中找到WLAN AutoConfig,右键,启动!...

2022-03-27 21:44:18 6446 4

原创 QT延迟函数

头文件#include<QTimer>//延迟函数void Widget::Delay_MSec(unsigned int msec){ QEventLoop loop;//定义一个新的事件循环 QTimer::singleShot(msec, &loop, SLOT(quit()));//创建单次定时器,槽函数为事件循环的退出函数 loop.exec();//事件循环开始执行,程序会卡在这里,直到定时时间到,本循环被退出}...

2022-03-26 16:54:14 3533 1

原创 symbol _ZdlPvm version Qt_5 not defined in file libQt5Core.so.5 with link time reference

说明:这个问题主要是Ubuntu自带的环境和用户自己安装的环境有冲突不兼容所造成的,这个与Ubuntu的运行机制有关。因为Qt启动程序默认在 /usr/lib/ 目录下查找libQt5Core.so.5动态链接库,而我自己安装的libQt5Core.so.5动态库在/home/XXX(用户名)/Qt5.9.5/5.9.5/gcc_64/lib下,二者是不兼容的(尽管二者名字看起来一样)解决方案思路:既然qt会去/usr/lib/ 目录下查找,那么就先把/usr/lib/libQt5Core.so.5先

2022-03-22 16:47:42 11554 3

原创 Linux下的QT的QProcess执行shell脚本文件

一、函数接口QProcess类提供了三个函数1、QProcess::execute() 以堵塞方式的执行shell命令,当命令执行完成后,调用进程才会继续执行。命令输出的任何数据都将转发给调用进程输出(因此无法捕获)。2、QProcess::start() 以异步方式的执行shell命令,命令输出的数据存储于缓冲区,可以通过readAllStandardOutput()捕获3、QProcess::startDetached() 以分离的方式执行shell命令,调用进程退出,则分离的进程将继续运行,而

2022-03-16 10:11:58 6440

原创 7z命令行解压缩时的覆盖提示(Would you like to replace the existing file:)

在用7z命令行解压缩的时候,如果目标文件夹已存在文件,命令行会提示Would you like to replace the existing file:,此时需要手动输入a(always的意思)再按enter确认才能继续。那么问题来了,如果该命令行脚本是用程序调用执行的,比如Qt的程序来自动调用,则Qt线程会卡在这个覆盖提示询问上,并且此时黑窗口是没有弹出的。此时需要用-y 使 7-Zip 执行命令时的大多数提示失效。您可以使用此选项来阻止在 e (释放) 和 x (完整路径释放) 命令中文件覆盖时的提

2022-03-04 15:46:11 4400 1

原创 No such file or directory #include <QX11Info>

我的问题描述:window环境是qt4.8.5,Linux环境是5.9.5,我直接把window 的qt源码复制到Linux下运行,会有点不对劲,程序起不来,这时需要手动更改下Linux的环境配置。报错: No such file or directory #include 这是因为编译器不认识 QX11Info,这时需要手动加上该模块解决方案:QT += gui x11extras就是上面的x11extras手动加上即可。来源:Compiler does not see QX11Info

2022-02-26 11:07:13 932

原创 QT线程之 moveToThread() 只能用信号槽方式触发

qt的线程使用方法有把某个对象的函数放置线程里执行,方法为moveToThread()具体操作步骤为:1、创建一个新的类,让这个类从 QObject 派生class MyWork:public QObject{ .......}2、在这个类中添加一个公共的成员函数,函数体就是我们要子线程中执行的业务逻辑class MyWork:public QObject{public: ....... // 函数名自己指定, 叫什么都可以, 参数可以根据实际需求添加 v

2022-02-19 23:27:19 2160

转载 Qt数据库的相关模块常见用法

转载来源:Qt sqliteQSqlQuery类用来执行SQL语句QSqlRecord类封装数据库所有记录QSqlRelationalTableModelQSqlQueryModelQSqlTableModel第一:QSqlDatabase类QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); 采用QSQLITE数据库db.setHostName("localhost"); //设置数据库主机名 db.setDatabaseNam

2022-02-16 17:28:43 319

原创 关于QTableWidget的信号cellChanged使用方法(这个信号好坑)

1.网上找了很久,关于cellChanged这个信号的使用方法很少很少,QT文档也没找到,有的也是不具体,就是简单介绍一下,踩了很多坑,现在通过自己探索之后,才发现这个信号很坑。 2.首先介绍一下我想要实现的功能:实现用户可以手动在最后一行可编辑空白行添加行,并且编辑完成后总是添加最...

2022-01-12 08:58:49 1763

原创 LeetCode - 59.螺旋矩阵II

来源:59.螺旋矩阵II题目:给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]]关键点:循环不变量原则,其实就是左右开闭的问题,如果左闭右开就是左边开始是算数的,右边是不算数的,刚好这点在for循环里可以体现出来,比如 for(int i = 0; i<2; i++) ,则 i=0是算数的为第一个,然后是 i = 1也算数,而 i

2022-01-08 23:55:17 88

原创 LeetCode - 209.长度最小的子数组

题目给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。示例:输入:s = 7, nums = [2,3,1,2,4,3] 输出:2 解释:子数组 [4,3] 是该条件下的长度最小的子数组。关键点用滑动窗口的思想,左右两个指针滑动,刚开始两个指针都放在最前面,然后右指针往右划,划到满足数组和sum>=target为止,此时记录一次最小长度。当记录一次最小长度以后,左指针也往右滑,

2022-01-06 23:04:37 68

原创 LeetCode - 977.有序数组的平方

又是一道双指针的题目,上一篇的双指针是快指针赋值给慢指针(快慢指针赋值),现在这篇是首尾两指针相互比较后,取大的赋值给新的数组。话不多说,上号: 977.有序数组的平方题目给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 1: 输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 [16,1,0,9,100],排序后,数组变为 [0,1,9,16,100]示例 2: 输入:

2022-01-05 23:07:00 386

原创 LeetCode 27.移除元素【快慢指针】

原题链接:移除元素对于初学者看不懂的可以看视频讲解,强推Leetcode 27 移除元素 【快慢指针】个人觉得B站视频的解法更直观理解,虽然本质上都一样。解题思路用两个指针,快指针和慢指针。快指针用来快速扫描数组元素判断数组元素是否等于val,慢指针用来计数,即最终返回的数组的长度。关键思想就是当快指针不等于val的时候,就把快指针的值赋值给慢指针的值,快慢指针同时往前移,此时相当于慢指针是计数有多少个有效值,先赋值一个,再往前移一个,顺序千万不能乱,先赋值再移动!当快指针遇到连续相等的val

2022-01-04 22:40:50 280

原创 LeetCode - 704.二分查找

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4原题链接:704.二分查找...

2022-01-04 20:32:00 76

原创 一些可能会用到的网站(不定时更新)

1.windows10安装ubuntu双系统教程(绝对史上最详细)添加链接描述

2021-09-05 21:32:43 108

原创 Qt QTableWidget 的 item 自适应宽度以及最后一列铺满最后

针对的是QtableWidget的函数①自适应宽度ui->tableWidget->resizeColumnToContents(0);ui->tableWidget->resizeColumnToContents(1);②最后一列铺满最后ui->tableWidget->horizontalHeader()->setStretchLastSection(true);...

2021-06-22 17:14:02 5720

原创 qt 中文字符乱码问题

这次是在main函数里整,屡试屡爽在main函数里①添加头文件#include <QTextCodec>②在main函数里定义添加如下代码 QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK")); QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK")); QTextCodec::setCodecForCStrings(QTextCo

2021-06-17 15:28:34 181

原创 如何连接网络打印机

连接网络打印机,顾名思义,就是在局域网内连接网络打印机,远程打印,可实现多台设备连接同一个打印机。设置步骤如下:①在一台已经连接上的电脑打开 记住这个端口,然后在新的电脑上手动填写。② 在新的电脑上手动填上。然后自动检测驱动安装就行了!...

2021-05-29 21:11:35 1027

原创 qt5.9.9中文字符乱码

本人的开发环境的IDE是QT Creator版本是5.9.9编译器是MSVC2015出现的问题是中文字符乱码,就是问好那种搜索了下,原因是因为MSVC编译器导致的解决方案:在要用到中文字符的头文件和源文件开头加上MSVC的一个宏:#if _MSC_VER >= 1600#pragma execution_character_set("utf-8")#endif例如解决方案出处:http://www.voidcn.com/article/p-wqwljgjy-bqp.ht

2021-04-17 22:47:39 356

原创 STC8A8K系列单片机的串口助手接收显示乱码

有没有小伙伴跟我一样用串口助手接收传感u器数据的时候显示乱码呢??(手动狗头doge)。。只需一招手动把晶振振荡器的频率改为 11.0592MHz

2021-04-09 11:33:59 1317 2

原创 opencv报错 : absort() has been called (press Retry to debug the application)

这个错误很奇妙,因为编译时能通过,但是运行时就报错了查了下资料这个报错是内存的问题百分百就是代码逻辑的问题,指针啊,变量啊这些,所以要回去查看代码逻辑是否有问题!我查了下,原来是我的一个变量分别在函数外与函数内分别用Mat定义了两次,内存就报错了,把函数内的定义去掉就正常运行了!贴上我的错误示范,请注意辨别…正确示范:...

2021-04-03 10:50:20 4390

原创 关于指针变量的思考

若有一个变量专门用来存放另一个变量的地址,那么就称它为“指针变量”。也就是说,指针变量里面存放的是指针,即地址。大家一定要区分“指针”和“指针变量”这两个概念。指针是一个地址,而指针变量是存放地址的变量。为了表示指针变量和它所指向的变量之间的联系,在程序中用“*”表示“指向”。如果定义变量 i 为指针变量,那么 *i 就表示指针变量i里面存放的地址所指向的存储单元里面的数据。指针变量的定义定义指针变量与定义普通变量非常类似,不过要在变量名前面加星号*,格式为:datatype *name;da

2021-03-27 22:04:27 575

原创 QT5的文字显示乱码问题

QT可以设置文字属性,例如设置窗口名称,但有时会显示乱码,这时只需要在头文件加上一句代码#pragma execution_character_set(“utf-8”)再qmake一下,编译一下,就可以正常显示!

2021-03-23 11:32:56 121

原创 QtCreator 编译时提示 warning C4819 的解决办法

用 QtCreator + Visual C++ 编译器 编译程序时经常会出现类似的警告:warning: C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失其实解决办法也很简单,将我们的代码保存为 utf-8 带 BOM 格式的文件就可以了。QtCreator 保存文件默认是 utf-8 格式的,但是不带 BOM。我们可以修改一下设置,让它每次保存是都保留 BOM。设置方法如下图:...

2021-03-23 11:29:44 371

原创 关于变量声明为什么要写在头文件中

C++中创建一个类会有一个 头文件 .h 和一个源文件.cpp我们一般都是把变量的定义写在 ,h 头文件中,这是因为对于声明在 .h文件中我们既可以用 private、protected和public 对变量进行限制,又可以让变量变成通用的变量例如声明一个指针 int *a; 则指针是个野指针没有初始化,可以在整个.cpp文件里调用,而如果是在.cpp里声明的话,则出了声明函数后,其他函数就找不到这个指针了。...

2021-03-23 10:50:21 680

转载 Win10改Win7图片查看器|Win10新增加Windows照片查看器

Win10中有不少是之前Windows系统没有的功能,同时也去除了些我们平常很少使用到的功能,也更新了不少的功能。像win10的图片查看器,有些此前一直使用win7系统的用户,使用起来就非常的不习惯,想换回旧版的照片查看器。这篇文章是本站给大家带来的win10改win7图片查看器方法教程。方法需要往注册表导入文件,大家备份好注册表再进行操作。Win10在不使用第三方图片查看程序的时候,打开图片就会自动开win10自带的照片应用:实际上win10中带有“图片查看器”程序 ,我们在注册表中添加该程序可以打开

2021-03-16 22:30:32 1026

原创 80C51定时/计数器的应用之中断方式T0实现LED灯闪烁

前言:TF0是51单片机bai定时器T0的溢出中断du标志位。当T0被允zhi许计数dao后,T0从初值开始按机器周期zhuan或者shu外部引脚输入的脉冲进行加1计数。当计数到T0最高位产生溢出时,置“1”TF0,并向CPU请求中断。当CPU响应该中断时,将由硬件自动清“0”TF0。当然,你也可以用“位操作指令”对TF0进行置“1”或清“0”操作。本次实验采用定时器中断,用的是第二种 T0有三个开关,分别是ET0 EA,在初始化时可以设置为1,即默认打开定时器TF0是定时器溢出时的标志位,当TF0

2021-03-04 18:08:18 4916 1

原创 STC-ISP的定时器计算器初值计算

51单片机的定时器计算器如图所示,按照参数选择说明TH0=0x3C; //设置定时器初值(65536-50000)/256;TL0=0xB0; //设置定时器初值(65536-50000)%256;win10的计算器程序员模式可以计算16进制

2021-03-04 17:16:20 1900 7

原创 80C51 定时/计数器工作方式1

原理工作方式1:①设置TMOD的 M0=1 M1=0 C/T=0 GATE=0 下面低位全为0 , 这样TMOD =0x01;②然后TH0 TL0 分别为高四位和低四位,赋予一个初值,这个初值就是延时多长的意思,比如要延时50ms,则65536-50000=15536,再把15536用除以和取余的方法算得高四位和低四位赋予TH0 和TL0,相当于桶底事先装了15536的水,然后过了50000后,就是过了50ms后,达到65536溢出。③然后再打开TR0=1,这样定时器就开始工作了。.

2021-03-04 16:01:07 3665 1

原创 51单片机之外部中断方式 ——— INT0 中断

在B站跟个up主中断教程,传送门 https://space.bilibili.com/483942191/video?tid=0&page=4&keyword=&order=pubdate实验目的:用独立按键作为外部中断的触发信号,当按键按下发送来信号的时候,再执行中断函数(在函数内定义LED灯的亮灭)如上图所示51单片机总共有5个中断源,本博文先展示第一种 INT0 中断先看电路图按键 P3^2 可以处罚中断源 INT0贴上代码:中断函数的定义#includ

2021-03-03 17:31:43 13728 3

原创 keil 程序之分模块编写

keil与visual studio一样可以分文件编写,不同的是vs可以很方便的添加类,头文件和源程序,今天在小破站发现一个机构讲的挺好的,思路值得借鉴!传送门在此,海创电子!https://www.bilibili.com/video/BV1vJ411X7iZ?p=27&spm_id_from=pageDriver先简单讲下思路,keil需要手动分别的添加头文件和源程序,然后再手动写定义如图所示:新建个头文件 pbdata.h 然后需要手动写定义 #ifndef __PBDAT

2021-03-01 23:24:56 4036

原创 STL初识 vector存放自定义数据类型(person)

vector也可以存放自定义类型 例如person类例如我自定义一个Person类class Person{public: Person(string name, int age) { this->m_Age = age; this->m_Name = name; }string m_Name;int m_Age;};然后定义类的变量,,再塞入vector容器vector<Person> v; //这里v是一个指针,是一个Person类型的指针,要

2021-02-25 08:40:34 1117

原创 STL初识 vector容器 (int内置数据类型)

vector就是一个容器,就跟数组一样可以存放数据,不同的是,vector可以有自己的函数如下:①创建vactor容器,并且通过模板参数指定容器中存放的数据的类型vector<int> v;②调用函数向容器中放数据v.push_back(10);v.push_back(20);v.push_back(30);v.push_back(40);③//每一个容器都有自己的迭代器,迭代器是用来遍历容器中的元素//v.begin()返回迭代器,指向容器中的第一个数据//v.end

2021-02-24 16:28:06 402

空空如也

空空如也

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

TA关注的人

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