自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

净无邪博客

三少爷的剑:剑气纵横三万里,一剑光寒十九洲!

原创 C++设计模式——观察者模式(strategy pattern)

一、原理讲解 1.1意图 定义一种“一对多”的关系。当一个对象(被观察者/发布者)的状态发生改变时,所有依赖它的对象都将得到通知并更新。又有别名为发布-订阅(publish-subscribe)。 1.2应用场景 一个抽象模型有两个方面,其中一个方面依赖于另一方面。将这二者封装在独立的对象...

2020-03-22 23:58:53 140 0

原创 C++设计模式——策略模式(strategy pattern)

一、原理讲解 1.1意图 定义算法簇,将这些算法封装起来,之间可以相互替换。这样的好处在于,使得算法可以独立于使用它的客户而变化。 1.2与模板方法区别 模板方法主要是继承接口类,而策略模式主要是组合接口类,两种方法核心区别在于,是继承?还是组合? 设计模式八大原则之一:优先使用对象组合...

2020-03-21 23:39:36 108 0

原创 C++设计模式——模板方法(template method)

一、原理讲解 模板方法的核心定义一个算法的骨架,而将一些细节方法延迟到之类中实现。其中,算法骨架是不变的部分,细节方法是变化的部分。设计模式的核心思想就是将变化部分和不变部分有效隔离、耦合出来。该思路的实现重要利用c++多态特性,运行时刻,基类指针指向不同的父类,则运行该父类重写的函数(前提:基...

2020-03-20 22:40:40 77 0

原创 删除字符串中第一个重复的 指定字符的左边所有字符 函数总结

本文主要总结一个删除字符串中第一个重复的指定字符的左边所有字符函数,简单来说,就是比如字符串“abcbefg”,比如我要删除第一个重复字符'b'左边所有字符,也就是要删除字符串“abcbefg”中的字符“ab”,剩下的字符是“cbefg”。 该问题的解决方法,博主在leeco...

2020-02-05 23:36:51 136 0

原创 求字符串中不重复的最长子串的长度(C++,leecode)

求一个字符串中不重复的最长子串时,最简单的办法就是暴力破解法,另一种是巧妙使用指针来求解。暴力破解法虽然简单粗暴,但是效率太低,几乎不实用;后一种巧妙用指针法效率较大,但是需要对指针有较深理解。本文用代码实现的是指针法,暴力破解法有需要的可以自行根据下面思路编程。下面将分别讲解两种方法思路和指针法...

2020-02-05 22:01:55 220 0

原创 单链表加法总结(C++,leecode,整形int)

本文主要总结链表加法代码,全文分为两部分,为思路讲解和代码实现。 1.1思路讲解 链表的加法主要根据小学数学10进制进位方法来解。两个链表数据相加,主要是每个节点对应的数据相加,当有进位标志时,则在下一个节点把这个进位标志加上,即sum=val1+val2+carry。 两个链表相加,和的链...

2020-02-05 14:16:35 100 0

原创 链表数据结构的创建和调用(C++)

在数据结构与算法中,链表是一个稍微有些难以理解的数据结构。本文主要总结链表的基本编程用法,通过创建一个链表和调用链表每个节点的数据代码,展示基本的链表数据结构用法。 1.1原理讲解 链表是在物理上可以是非连续的存储空间,由一片片存储区域组成,每个存储区域又被成为节点,每个节点又指向下一个节点,...

2020-02-04 23:24:43 65 0

原创 两数之和2:输入有序数组(leecode)(c++)

在一个有序数组中,找出两个数,使得两数之和等于目标值。数组下标从1开始。 输入: numbers = [5,6,7,8,9,10], target = 11 输出: [1,2] 解释: 5 与 6 之和等于目标值 11 。因此 index1 = 1, index2 = 2 。 1.1解题思路 ...

2020-02-04 11:06:53 83 0

原创 在一个数组中找出两个数,这两个数之和为指定目标值,返回这两个数下标(leecode)(c++)

本文主要总结在一个数组中取出两个数,这两个数满足条件为:两数之和为制定目标值target,并且函数返回这两个数下表。 示例: 给定 nums = [5,6,7,8,9,10], target = 19 因为 nums[4] + nums[5] = 9 + 10 = 19 所以返回 [4, 5...

2020-02-03 18:53:14 168 0

原创 C++求字符串所有子串并顺序输出string::substr()

在Leecode做算法题时,经常遇到一些字符串的题目,这些题目有不少是有一种通用解法,也就是暴力解法。用穷举法列出所有可能的结果,然后根据附加条件进一步筛选符合条件的解。本文主要总结的是求出一个字符串中,所有子串,子串是稳定的,也就是说,相对原来的字符串位置顺序不变。下面是总结代码和思路。 1....

2020-02-02 22:39:46 197 0

转载 程序员必须掌握的核心算法(C++)

本文完全转载如下博客地址,转载目的仅仅只是交流学习,如果侵权,请联系我,我会及时删除和处理! 转载原文地址:https://blog.csdn.net/m0_37907797/article/details/102661778 ...

2019-11-03 01:11:10 218 0

原创 直接插入排序算法总结(C++代码、Qt)

直接插入算法是一种稳定的(排序前后相同元素相对位置保持不变)排序算法,空间复杂度是,最坏时间复杂度是。一般用在数组基本有序或者数据规模很小的时候非常高效。直接插入排序主要思想是将一个数组分为有序数组和无序数组,然后将无序数组依次插入有序数组中,插入的时候,从无序数组的左边第一个数开始,往有序数组的...

2019-10-29 22:27:24 108 0

原创 大根堆排序算法(C++实现、Qt)

堆排序算法是一种选择排序,主要思想是选好一个非叶子节点子树,然后用该子树较大的孩子跟父节点比较,较大者跟父节点交换。如果交换后,孩子节点不满足大根堆排序,则交换依次后,用交换的孩子作为根节点,对该孩子进行大根堆排序,直到所有孩子节点全部满足大根堆排序,然后才继续往上一层节点继续比较排序; 下图是...

2019-10-28 23:54:40 105 0

原创 Qt5自定义状态栏QStatusBar外观(背景)和状态栏基本用法(显示普通消息、临时消息、永久消息)

本文主要总结Qt状态栏QSatatuBar用法,通过继承状态栏,自定义状态栏背景图形,以及状态栏三种基本用法。 状态栏类QStatusBar主要有显示普通消息、显示定时消息、显示永久消息三种功能。三种都十分常用,下面先总结自定义状态栏外观用法和将状态栏三种用法进行详细讲解和代码编写。 一、自定...

2019-10-19 22:43:02 381 0

原创 Qt动态增加和动态删除QWidget内控件(有布局和没有布局都有效)(qDeleteAll、delete、deleteLater、findChildren)

在QWidget界面中,不管是否采用了布局,只要是QWidget的子类,则可以用findchild()函数查找所有子类,然后通过指定函数进行删除。下面是博主总结的两种动态删除dget内控件的方法。 一、通过函数qDeleteAll()删除 其中,该函数原型有两个,分别如下: //第一个原型...

2019-10-19 18:01:40 470 0

原创 Qt 2D绘图函数QPainter类基本用法(绘制图片、直线、填充颜色的矩形)(自定义QWidget边框和任意形状)

Qt中绘制2D图形最核心的一个类是QPainter。类QPainter是在设备类QPaintDevice上绘制几何图形(包括直线、曲线、圆形、弧形、矩形等等),其中设备类QPaintDevice的子类又有QWidget、QImage、QPictrue、QPixmap、QOpenGLPaintDev...

2019-10-19 00:33:00 347 0

原创 Qt获取QWidget实时窗口大小和其余窗口实时信息(最大化、拉伸、缩放、QWidget::rect())

Qt中,获取实时窗口,可以用函数QWidget::rect(); inline QRect QWidget::rect() const { return QRect(0,0,data->crect.width(),data->crect.height()); } 由QRect定义...

2019-10-18 23:18:52 586 0

原创 Qt不用布局类挂载(增加)界面控件和显示界面控件的基本原理和示例代码(setGeometry()、QPushButton)

很久以前学QT时,经常按照例子打了,发现显示不了控件。这是因为图形控件都是从QWidget继承而来,而QWidget是一个基本界面,要显示的话,需要调用其槽函数show()。当我们不用布局类时,用这种方式可以直接显示界面控件。但是,有时会出现用了show()槽函数,也会不显示控件的情况。为什么会这...

2019-10-18 19:41:56 142 0

原创 QMenu、QMenuBar样式表总结

一、菜单QMenu和菜单栏QMenuBar样式表总结 1.1菜单栏QMenuBar样式表 QMenuBar样式表,设置菜单栏字体颜色、背景色、选中背景色的样式表QSS代码如下 "QMenuBar{background-color:transparent;}"/*设置背景...

2019-10-18 16:38:29 1069 0

原创 QtCreator中删除Other Files整个文件夹方法

1.1问题出现 用QtCreator集成IDE,添加资源文件时,常常误操作,导致工程中添加了很没用的资源或者文件,这时用鼠标操作只能一个个删除这些图片或者文件,无法整个删除。如下图所示: 1.2解决办法 要想批量删除,甚至整个删除这些图片或者文件资源,可以在*.pro工程文件中进行删除。...

2019-10-18 10:26:18 868 0

原创 Qt菜单QMenu和菜单栏QMenuBar基本用法、自定义菜单用法

QMenu和QMenuBar是Qt中的菜单类和菜单栏类,其中,菜单QMenu挂载在菜单栏QMenuBar上。本文主要总结QMenu的三种常用用法,分别为常规用法、继承QWidgetAction自定义菜单项用法、将QMenu当QWidget挂载一个布局用法。 下面对每种用法进行原理讲解和代码总结。...

2019-10-17 22:55:18 489 0

原创 快速排序算法总结C++

本文主要用C++总结快速排序算法原理和代码。 1.1快速排序算法原理 快速排序的时间复杂度最坏为,平均时间复杂度为,采用了分而治之思想,是不稳定算法(一趟排序后,数列中原来前后位置顺序不变)。具体实现原理如下: a1 从数列中任意选取一个数作为基准数(枢轴,pivot) a2 遍历数列,将...

2019-10-16 22:47:52 55 0

原创 用Qt实现QQ好友列表界面伸缩功能(完全一模一样)(伸展和收缩、抽屉效果、类似树形控件)(鼠标划过QSS效果)

本文主要总结用Qt的自定义按钮和QWidget界面实现QQ好友列表的界面伸展和收缩功能,以及鼠标滑过、鼠标单击的QSS样式表效果。全文分为两大部分,分别是原理讲解和效果实现。 抽缩界面效果图 源代码下载地址:https://download.csdn.net/download/naibo...

2019-10-13 20:05:17 625 0

原创 Qt自定义按钮,实现图片、文字内容位置任意布局(上图下文字、左图又文字),以及样式表设置(鼠标滑过、单击效果)

本文主要总结在一个自定义的按钮。该按钮可以任意摆放图片和文字位置和距离,同时可以用QSS设置按钮内图片、文字、整个按钮的样式表效果,也就是说,可以实现鼠标划过、鼠标选中等样式表,跟原来QPushbutton的样式表效果一模一样! 效果图 源代码下载地址:https://download.cs...

2019-10-13 19:52:52 780 0

原创 QPushbutton设置按钮文字位置(文本对齐方式)和左右上边框线型和颜色

1.1 QPushbutton中,设置按钮内容text可用QSS设置,QSS代码为: text-align:bottom; 结合设置按钮大小和背景图标大小,可以设置上面图标下面文字,中间间距可以任意调整效果。 1.2设置按钮上面、左边、右边边框线型和颜色 "#QCusto...

2019-10-12 16:26:53 4627 0

原创 Qt中鼠标滑过控件由箭头变成手型QWidget::setCusor()

qt中,当要实现鼠标进入某个控件区域时,鼠标箭头变为手型效果,可以用函数QWidget::setCursor(),其中该函数原型如下所示:(该代码对于任何继承于QWidget的控件都有效,也就是无论是按钮、编辑框、表格、树等都有效) void setCursor(const QCursor &...

2019-10-11 14:48:43 213 0

原创 Qt打开可执行文件*.exe所在目录文件夹(QDesktopServices::openUrl()、QCoreApplication::applicationDirPath())

qt中打开可执行文件*.exe所在目录的文件夹主要用到了两个静态函数,分别为QDesktopServices::openUrl()和QCoreApplication::applicationDirPath()。即 static bool QDesktopServices::openUrl(co...

2019-10-11 14:23:42 71 0

原创 Qt中获取系统日期时间(具体到毫秒和星期几QDateTime)

Qt中获取系统时间可以用类QDateTime的一个静态函数,具体代码如下所示: #include <QDateTime> qDebug()<<QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss....

2019-10-11 14:08:11 542 0

原创 Qt中事件过滤器eventFilter中所有枚举事件总结

Qt中事件过滤器一般是用在继承QObject的类中,但是更多的是用在继承QWidget的界面类中。在界面类中,一般用的最多的是鼠标和键盘事件,包括鼠标摁下、移入、移除、拖拽等。一般在鼠标做出相应动作时,系统就会自动发送对应事件,然后被事件过滤器捕获,从而执行逻辑业务代码。 注意:事件过滤器作用域...

2019-10-10 16:33:58 147 0

原创 Qt中通过信号槽函数获取发送信号的对象(qobject_cast、sender)

在Qt中,可以通过信号槽函数获取发送者对象,主要有两个核心函数qobject_cast<T>()和sender()。用法如下 1.1先通过connect绑定信号槽,代码如下: QLineEdit *lineEdit = new QLineEdit(); lineEdit->...

2019-10-10 14:24:30 815 0

原创 QString按空格分割字符串(split)

QStirng中简单的字符串分割可以按照空格(“ ”)、逗号(“,”)、顿号(“、”)等进行分割,也可以用复杂的正则表达式。本文主要用简单的按照空格分割每个字符串。下面是简单的示例代码: QString str="aa bb cc"; QStringList...

2019-10-09 15:37:40 2667 0

原创 Qt中用类QSettings读写配置文件ini

本文主要总结在Qt中使用简单配置文件QSetting来存储和读取对应内容。其中,QSettings有限制,只能存储段-键值对模式,如果需要更复杂业务,需要进行嵌套或者选择xml、json等配置文件。 一、原理讲解 类QSettings是Qt自带的,主要有两个功能,分别是创建读写配置文件*.in...

2019-10-09 10:34:21 98 0

原创 Qt中QObject::connect()的lambda用法

Qt5在QObject::connect()添加了几种新用法,其中一种是lambda表达式(也称为:匿名函数),其中C++的lambda表达式原理解说可以参考博主这篇博客:https://blog.csdn.net/naibozhuan3744/article/details/96353035 ...

2019-09-29 22:04:21 244 0

原创 获取QTableview中选中行的第一列内容

qt中,要获取获取QTableview中选中行的第一列内容,只需要用到一个mode和选中行触发信号。 一、步骤如下 1.1先绑定选中行信号事件 //绑定表格选中行摁下触发事件 connect(addedDeviceTable,SIGNAL(pressed(QModelIndex)),thi...

2019-09-29 20:50:33 444 0

原创 Qt中QScrollBar样式用法(QSS)

1.1 QScrollBar样式用法如下: //整个垂直滚动条区域样式 "QScrollBar:vertical{background-color:transparent;width:20px;height:255px;padding-top:20px;padding-bottom:...

2019-09-23 19:56:52 855 0

原创 QSS中QTableview的表头和边框border设置

先屏蔽边框,然后分别设置边框上下左右的边线。其中在QTableview中,要设置表头,要按照如下方式写法才有效,代码如下: "QHeaderView::section, QTableCornerButton::section {padding: 1px;border: none;bo...

2019-09-16 17:28:38 1937 0

原创 QTreeview 设置复选框、箭头、选项的QSS详细用法

本文主要总结QTreeview的用QSS美化界面用法,具体的美化包括QTreeview的箭头伸展和收缩,复选框的勾选、不勾选、半勾选,选项的选中、不选中状态,具体的QSS设置代码如下所示: 1.1 QSS美化QTreeview代码 "QTreeView{background-col...

2019-09-12 15:19:23 535 0

原创 QTreeview中虚线框解决办法(QWidget控件祛除焦点)

QTreeview选中后出现虚线框,也就是焦点,一直祛除不了。 可用如下三种方式解决QTreeview焦点问题; 主要用QSS里面的outline:0px;该用法也适用于任何继承于的QWidget控件。 QTreeview->setStyleSheet("outline...

2019-09-10 16:23:52 282 0

原创 QStandItem::setData()函数用法(解决设置了QIcon后,setData函数无效问题)(Qt)

博主用QStandItem::setData()函数后,发现设置了QStandItem::setIcon()函数后,用setData()函数无效。实际上,并不是无效,数据真实存储了,只是我们引用不对。 1.1错误分析 具体的引用应该用如下:data(Qt::UserRole+1) mode...

2019-09-03 17:18:44 479 1

原创 QVector容器内元素排序和去重简单用法(sort、vector、unique、erase)

本文主要总结给Qt的QVector容器内元素排序和去重,下面是关键函数总结。 1.1核心函数讲解 Qt中的QVector容器用法跟STL中的vector容器基本一样。本文是先建立一个容器,然后随机填充十个0-5内整数,接着用算法对QVetor容器内的元素进行排序和去重。 其中,算法的关键是先...

2019-08-08 19:12:50 1322 0

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