自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 问答 (1)
  • 收藏
  • 关注

原创 LeetCode解题记录(贪心算法)(二)

1. 前言由于后面还有很多题型要写,贪心算法目前可能就到此为止了,上一篇博客的地址为LeetCode解题记录(贪心算法)(一)下面正式开始我们的刷题之旅2. 贪心划分字母区间题目链接

2021-07-18 20:06:54 216

原创 Qt Model/view 小实例 文件目录浏览器

1. 文件目录浏览器直接在main.cpp文件中添加下列代码#include "mainwindow.h"#include <QApplication>#include <QAbstractItemModel>#include <QAbstractItemView>#include <QItemSelectionModel>#include <QDirModel>#include <QTreeView>#inclu

2021-07-15 19:49:44 426

原创 C++内存管理机制

1. C++内存管理机制在C++中内存分为5个区,分别是堆、栈、自由存储区、全局/静态存储区和常量存储区**堆(heap):**分配方式类似于链表;一般由程序员分配和释放,若程序员不释放,OS可能回收。分配方法:malloc、new ;释放方法:free delete**栈(heap):**编译器自动分配释放,存放函数参数值、局部变量的值。操作方式类似于:数据结构的栈。 进程的每个线程都有私有的栈使用 new 和 delete时, 内存在堆中分配。堆内存空间必须通过 delete 完全

2021-07-15 14:28:55 425

原创 C++11运算符重载详解与向量类重载实例(<<,>>,+,-,*等)

1. C++运算符重载介绍C ++ 中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C ++ 中重新定义这些运算符,赋予已有运算符新的功能,使它能够用于特定类型执行特定的操作。运算符重载的实质是函数重载,它提供了C ++ 的可扩展性,也是C ++ 最吸引人的特性之一。运算符重载时要遵循以下规则:( 1 ) 除了类属关系运算符 " . " 、成员指针运算符 " .* " 、作用域运算符 " :: " 、sizeof运算符和三目运

2021-07-15 10:38:24 1288

原创 记录 错误 C7510 “iterator”: 类型 从属名称的使用必须以“typename”为前缀 KMatrix_vector

1. 问题 “iterator”: 类型 从属名称的使用必须以“typename”为前缀今天将我VS2017 的代码移植到VS2019上面时,产生了上面的错误,产生错误的代码片段如下 vector<vector<T>>::iterator it = r.begin() + row; r.erase(it); rowCount--;2. 解决办法在vector前面加上 typename 解决问题,编译通过,还有其他人说改vs版本啥的方法,大家可以自己去百度一下,我

2021-07-14 11:43:49 525

原创 C++智能指针之shared_ptr与右值引用(详细)

1. 介绍在 C++ 中没有垃圾回收机制,必须自己释放分配的内存,否则就会造成内存泄露。解决这个问题最有效的方法是使用智能指针(smart pointer)。智能指针是存储指向动态分配(堆)对象指针的类,用于生存期的控制,能够确保在离开指针所在作用域时,自动地销毁动态分配的对象,防止内存泄露。智能指针的核心实现技术是引用计数,每使用它一次,内部引用计数加1,每析构一次内部的引用计数减1,减为0时,删除所指向的堆内存。C++11 中提供了三种智能指针,使用这些智能指针时需要引用头文件 :std::sh

2021-07-12 19:52:11 743

原创 Qt5项目实现功能丰富的文本编辑器Plus(实现部分wps功能)

1. 前言这次花了大约4天的时间,去做了这个文本编辑器Plus,这个编辑器主要是为了让我去熟悉一些常用的操作,以及信号槽的使用,我上次做的简易版文本编辑器地址:Qt5实现文本编辑器2. 主界面展示界面演示了部分功能3. 功能介绍3.1 文件操作功能新建文件打开文件打印文件打印图片3.2 图像坐标变换放大功能缩小功能旋转功能(90°,180°,270°)纵向镜像水平镜像3.3 文本编辑功能设置字体设置字号设置文字加粗设置文字斜体设置文字下划线设置文字颜色

2021-07-12 17:07:11 671

原创 LeetCode解题记录(贪心算法)(一)

1. 前言目前得到一本不错的算法书籍,页数不多,挺符合我的需要,于是正好借这个机会来好好的系统的刷一下算法题,一来呢,是可以给部分同学提供解题思路,和一些自己的思考,二来呢,我也可以在需要复习的时候,通过博客来回顾自己,废话不多说,开始!目前的规划2. 算法解释顾名思义,贪心算法或贪心思想采用贪心的策略,保证每次操作都是局部最优的,从而使最后得到的结果是全局最优的。举一个最简单的例子:小明和小王喜欢吃苹果,小明可以吃五个,小王可以吃三个。已知苹果园里有吃不完的苹果,求小明和小王一共最多吃多少个苹

2021-07-08 09:35:44 182

原创 Qt5实现文本编辑器(附图片转PDF与详细代码)

1. 功能介绍老规矩,我们直接上截图这是主界面文件菜单界面编辑菜单界面设置菜单界面关于菜单界面2. 功能演示设置字体颜色设置字体大小点击关于菜单点击关于Qt菜单会自动跳转到Qt的官网点击图片转PDF打开文件等对话框3. 代码我们直接上代码aboutwidget.h#ifndef ABOUTWIDGET_H#define ABOUTWIDGET_H#include <QWidget>namespace Ui {class A

2021-07-04 16:31:11 709 1

原创 Qt中使用QTextStream中文乱码的情况解决

1. 前言今天在做一个文件编辑器,然后发现读取txt文件的时候,中文的显示乱码,然后在网上查了一些方法,没用,自己摸索了一下,找出了一个办法2. 解决办法QTextStream *in = new QTextStream(&file);in->setCodec("UTF-8");QString text = in->readAll();ui->textEdit->setText(text);在读取文件之前,设置编码为UTF-8这样在textEdit里可以正常

2021-07-04 12:04:05 4139

原创 VS写Qt项目时,ui界面拖拽的控件代码找不到引用的解决办法

最近准备尝试用VS去开发Qt项目,但是我在ui文件中修改的控件,在vs里面找不到,于是上网浏览解决办法,总结如下1. 保存Ui文件在拖拽控件之后,Ctrl+S2. 重新编译ui文件3. 右键项目,重新扫描解决方案这样就可以啦,话说真的好麻烦啊,各位大佬们有没有其他更好的解决办法?在评论区说一下?...

2021-07-03 22:04:39 1637 2

原创 2021年6月:最近的一些总结与思考

1. 前言最近刚刚写了一个小项目,并且打包了给室友玩,说实话,挺有成就感的,但是在写这个项目的过程中,我也发现了自己的问题,比如什么时候用指针,指针什么时候释放,以及代码的性能如何优化等,因此在这里反思一下自己,顺便做一下以后的规划项目的话,由于一些原因,不能公开,等过一段时间我会发出来与大家分享2. 思考感觉自己编程的天赋还是有的,学新东西学得很快,可能是平常没有太认真的去学,觉得自己基础比较薄弱,不过现在补救还来得及,我的目标是成为技术大佬哈哈哈哈,和语言没关系,目前的话,就是好好把C++给学好

2021-06-26 00:21:38 124

原创 2021Qt打包发布教程

因为最近写了一个程序,然后想着能给室友玩耍,就研究了一下如何打包,写这篇博客记录一下1. 首先获得程序的Release版本就是点击这个Release,然后构建一遍2. 进入构建的release文件夹找到对应的exe文件3. 将这个文件放入单独的文件夹然后进入windows的控制台win+r打开,然后输入cmd然后进入你放exe文件的目录执行命令 windeployqt.exe 你的文件名.exe然后它会将你需要的依赖包导入进来,这样双击exe就可以运行了打包成压缩文件,发给你的.

2021-06-25 23:45:41 502

原创 Qt实现基于多线程的文件传输(服务端,客户端)

1. 效果先看看效果图这是传输文件完成的界面客户端服务端2. 知识准备其实文件传输和聊天室十分相似,只不过一个传输的是文字,一个传输的是文件,而这方面的知识,我已经在前面的博客写过了,不了解的同学可以去看一下C++网络编程Qt实现网络聊天室(客户端,服务端)还有多线程相关的知识Qt中的多线程与线程池浅析+实例2.1 关于多线程这次是用多线程实现的文件传输系统,其中对客户端来说,子线程负责连接服务器,发送文件,主线程负责修改进度条,对服务端来说,也是用子线程来处理客户

2021-06-24 12:00:56 3139 10

原创 error: type ‘QObject‘ is not a direct or virtual base of ‘SendFile‘

今天遇到了一个错误详细信息如下sendfile.cpp:3:39: error: type ‘QObject’ is not a direct or virtual base of ‘SendFile’在QtCreator中报错很迷惑,为啥不能这样写SendFile是我自己定义的一个类问题解决方法:加上继承QObject类...

2021-06-23 16:28:08 3650

原创 Qt实现网络聊天室(客户端,服务端)

1. 效果演示客户端服务器连接成功之后2. 预备知识如果不知道网络编程的可以去看我的上一篇文章C++网络编程在Qt中,实现网络编程的方式比用C++或C实现要方便简单许多,因为Qt已经替我们封装好了,我们会使用就可以了,然后大家还需要了解Qt 的信号槽机制,可以参考我这篇文章,Qt信号槽2.1 QTcpServerQTcpServer 类用于监听客户端连接以及和客户端建立连接,在使用之前先介绍一下这个类提供的一些常用 API 函数:构造函数QTcpServer::QTcpS

2021-06-23 10:04:44 6253 5

原创 C++网络编程

昨天学习了一些C++网络编程的一些相关知识,今天回忆复习一下1. 相关知识1.1 局域网和广域网局域网:局域网将一定区域内的各种计算机、外部设备和数据库连接起来形成计算机通信的私有网络。广域网:又称广域网、外网、公网。是连接不同地区局域网或城域网计算机通信的远程公共网络。IP(Internet Protocol):本质是一个整形数,用于表示计算机在网络中的地址。IP 协议版本有两个:IPv4 和 IPv6IPv4(Internet Protocol version4):-使用一个 3.

2021-06-20 16:28:27 163

原创 网络通信中字节序的理解

1. 字节序的理解计算机硬件有两种储存数据的方式:大端字节序(big endian)和小端字节序(little endian)。举例来说,数值0x1234使用两个字节储存:高位字节是0x12,低位字节是0x34。就比如你写一个数字,比如128,那么8是个位数,自然是低位字节大端字节序:高位字节在前,低位字节在后,这是人类读写数值的方法。小端字节序:低位字节在前,高位字节在后,即以0x1122形式储存。图更好理解2. 为什么会有小端字节序我相信很多人可能和我有一样的疑惑,因为大端字节序是

2021-06-19 16:39:25 2412

原创 Qt中的多线程与线程池浅析+实例

1. Qt中的多线程与线程池今天学习了Qt中的多线程和线程池,特写这篇博客来记录一下2. 多线程2.1 线程类 QThreadQt 中提供了一个线程类,通过这个类就可以创建子线程了,Qt 中一共提供了两种创建子线程的方式,先看一下这个类中提供的一些常用 API 函数:2.1.1 常用函数// QThread 类常用 API// 构造函数QThread::QThread(QObject *parent = Q_NULLPTR);// 判断线程中的任务是不是处理完毕了bool QThread

2021-06-19 13:17:35 2372

原创 Qt中容器类型控件介绍

1. Qt中容器类型控件介绍本篇博客为本人学习所写,后续会继续补充1.1 QWidget关于QWidget在前边的章节中已经介绍过了, 这个类是所有窗口类的父类, 可以作为独立窗口使用, 也可以内嵌到其它窗口中使用。Qt中的所有控件都属于窗口类, 因此这个类也是所有控件类的基类。如果一个QWidget类型的窗口中还有子窗口, 为了让子窗口有序排列, 需要给当前QWidget进行布局操作。1.2 QFrameQFrame就是一个升级版的QWidget, 它继承了QWidget的属性, 并且

2021-06-16 16:58:06 554

原创 Qt5中按钮控件的用法浅析

1 QAbstractButtonQAbstractButton类是所有按钮的基类, 常用 的很多的api都是从这个基类继承的.1.1 常用公共成员和槽函数// 参数text的内容显示到按钮上void QAbstractButton::setText(const QString &text);// 得到按钮上显示的文本内容, 函数的返回就是QString QAbstractButton::text() const;// 得到按钮设置的图标QIcon icon() const;

2021-06-15 19:43:26 688

原创 Qt中的布局浅析与弹簧的使用,以及Qt居中的两种方法

1. 布局为什么要布局:布局之后窗口的排列是有序的布局之后窗口的大小发生变化, 控件的大小也会对应变化如果不对控件布局, 窗口显示出来之后有些控件的看不到的布局是可以嵌套使用常用的布局方式:水平布局 -> 所有的控件水平排列 -> 一行多列垂直布局 -> 所有控件垂直排列 -> 多行一列网格(栅格)布局 -> 多行多列在Qt中设置布局的两种方式使用Qt提供的布局使用QWidget进行布局 -> 推荐首先需要从工具栏中

2021-06-14 23:03:12 7502

原创 Qt中常用类QWidget,QMainWindow,QFileDialog,QInputDialog,QMessageBox,QFontDialog,QProgressDialog等类的用法

1. QWidgetQWidget类是所有窗口类的父类(控件类是也属于窗口类), 并且QWidget类的父类的QObject, 也就意味着所有的窗口类对象只要指定了父对象, 都可以实现内存资源的自动回收。这里给大家介绍一下关于这个类常用的一些API函数。// 构造函数QWidget::QWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());// 公共成员函数// 给当前窗口设置父对象void QW

2021-06-14 21:30:36 422

原创 C++中Lambda表达式浅析

1. Lambda表达式Lambda表达式是C++11最重要也是最常用的特性之一,是现代编程语言的一个特点,简洁,提高了代码的效率并且可以使程序更加灵活Lambda表达式就是一个匿名函数,所谓匿名函数,那自然是没有名字的函数,当一个函数只是临时使用而且比较简单的时候,就可以采用Lambda表达式Lambda表达式的语法格式如下:当你不需要capture捕获的时候,就直接写一个框框[]当你不需要参数的时候,就直接写一个括号()当年不需要返回值的时候,不用写箭头->和ret(返回值类型)

2021-06-13 22:26:32 372 3

原创 QT中自定义信号槽的使用浅析+实例

1. Qt中自定义信号槽的使用Qt框架提供的信号槽在某些特定场景下是无法满足我们的项目需求的,因此我们还设计自己需要的的信号和槽,使用connect()对自定义的信号槽进行连接。如果想要使用自定义的信号槽, 首先要编写新的类并且让其继承Qt的某些标准类,我们自己编写的类想要在Qt中使用使用信号槽机制, 那么必须要满足的如下条件:这个类必须从QObject类或者是其子类进行派生在定义类的头文件中加入 Q_OBJECT 宏1.1 自定义信号要求:1. 信号是类的成员函数2. 返回值是 v

2021-06-13 17:19:29 3615

原创 Qt项目ui文件中新添加的控件在代码中不识别的问题解决

今天在学Qt框架的信号槽,然后发现在ui中加的控件,通过ui-> 找不到,没有识别,于是上网查找了一下问题解决方法添加ui控件后,执行程序,退出程序,将debug目录下的ui_XXXX.h拷贝到程序目录下,重新打开就可以使用新添加的控件。如果不行不行就清理一遍重新构建。再不行就按住ctrl,鼠标点击存在的控件名进入ui头文件,然后退出一遍。我采用重新构建的方法,解决的了问题就是下面这个小锤子,编译器为Qt Creator...

2021-06-12 00:23:18 6704

原创 QT信号槽机制理解

1. 信号和槽概述> 信号槽是 Qt 框架引以为豪的机制之一。所谓信号槽,实际就是观察者模式(发布-订阅模式)。当某个`事件`发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal)。这种发出是没有目的的,类似广播。如果有对象对这个信号感兴趣,它就会使用连接(connect)函数,意思是,将想要处理的信号和自己的一个函数(称为槽(slot))绑定来处理这个信号。也就是说,当信号发出时,被连接的槽函数会自动被回调。这就类似观察者模式:当发生了感兴趣的事件,某一个操作就会被自动触

2021-06-11 23:24:06 491

原创 C++ QT安装教程2021

第一步去官网下载https://download.qt.io/archive/qt/第二步next然后我是注册的账号注意密码的格式,要求至少7位,包含大小写字母和数字第三步点击下一步选择自己的安装目录记得下面的框一定要记得打上勾,意思是安装Qt Creator第四步MSVC2015 64-bit: Visual Studio 2015 使用的64位编译套件MSVC2017 32-bit: Visual Studio 2017 使用的32位编译套件MSVC2

2021-06-11 17:59:38 2663

原创 Qt Creater快速定义函数的快捷键

1.简介在Qt creator中编写函数的时候,在头文件编写了函数,需要在相应的cpp文件中编写对应的函数定义实现,如果每次都需要手动的敲击全部的代码,这会非常的耗时耗力,显得很方便,这时候就需要巧妙的利用好Qt creator这款IDE的快捷功能了2.小技巧现在我在mainwindow.h 中定义一个dataPlus函数,如图然后鼠标移动到函数的末尾,按下Alt+Enter,就会出现如下画面点击在mainwindow.cpp下添加定义...

2021-06-11 17:58:12 5036 1

原创 QT基本数据类型

因为Qt是一个C++框架, 因此C++中所有的语法和数据类型在Qt中都是被支持的, 但是Qt中也定义了一些属于自己的数据类型, 下边给大家介绍一下这些基础的数类型。QT基本数据类型定义在#include <QtGlobal> 中,QT基本数据类型有:类型名称注释备注qint8signed char有符号8位数据qint16signed short16位数据类型qint32signed short32位有符号数据类型qint64long l

2021-06-11 17:56:52 519

原创 深度学习基础-训练集与测试集的划分

深度学习基础-训练集与测试集的划分本篇文章将介绍常用的三种训练集与测试集的方法,描述都是我自己的理解,如果理解有误,还望读者指正。1.留出法留出法是最直观,也是最简单的训练集与数据集的划分方法,其步骤为:(1)将数据随机分为两组,一组作为训练集,一组作为测试集(2)利用训练集训练数据分类器,然后用测试集评估模型,记录最后的分类准确率来作为分类器的评价指标缺点:在测试集上的预测性能的高低与数据集的拆分有很大的关系,所以基于这种数据集拆分基础上的性能评价结果不够稳定。2.K折交叉验证既然留出法的

2020-07-09 17:54:08 2748

原创 hexo个人博客搭建

关于如何搭建hexo个人博客我的方法搭建博客详细教程网站推荐主题安装详细步骤最重要的一步我的方法1.首先我参考了很多很多的资料,在百度上面2.然后按照百度上面的方法慢慢来,多参考几个文章,找相同与不同3.GIt有问题复制问题的错误代码去百度,总能找到答案搭建博客详细教程网站推荐点我有惊喜点我有糖吃这两个网站是比较详细的过程,你自己做的时候要同时参考两个。然后 Git , node...

2019-08-24 23:10:14 168

空空如也

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

TA关注的人

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