自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

友善啊,朋友的博客

想写什么就写什么

  • 博客(39)
  • 资源 (24)
  • 收藏
  • 关注

原创 泛型算法:按条件查找元素算法find_if()、find_if_not()

泛型算法:查找元素算法find()find()元素查找时判定元素相等依赖于元素自身“==”的操作。相比之下,find_if()函数可以依据自定义的查找条件来查找元素。find_if()返回第一符合条件的元素。 QStringList list; list<<"aa"<<"bb"<<"cc"<<"dd"<<"cc"<<"dd"; auto findIfResult = std::find_if(list

2020-12-31 12:52:27 469

原创 Qt编写自定义控件:遥控器圆形按钮控件

根据QT图形视图框架:自定义遥控器圆形按钮图形项改的QWidget版本,原理一样。效果:代码:#ifndef WIDGET_H#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACEnamespace Ui { class Widget; }QT_END_NAMESPACEclass Widget : public QWidget{ Q_OBJECTpublic: Widget(QWidge

2020-12-30 23:08:25 3207 3

原创 泛型算法:容器相邻重复元素去除算法unique()

unique()函数只能对相邻的元素进行去重操作,所以在使用之前要排序。对于自定义元素要重载"=="运算符,因为去重要有判断重复的标准。struct ceshi{ int frist = 0; int second = 0; bool operator==(const ceshi &b) const { if(b.frist == this->frist && b.second == this->second)

2020-12-30 22:49:51 416

原创 使用QPainterPath绘制不规则蒙板

绘制如下按钮组:要求当按下其中的一个按钮时,该按钮区域显示如下蒙板:中间两个还好说都是矩形的,在相应范围drawRect绘制矩形就行了;要绘制两边的含有圆角的不规则形状的面板可以使用QPainterPath。 QPainterPath path; path.moveTo(drawRect.center()); path.addRoundRect(drawRect,30,30); QPainterPath path2; if(index == 0)

2020-12-30 14:53:07 658

原创 QT图形视图框架:自定义遥控器圆形按钮图形项

效果:代码:#ifndef DISCBUTTONGRAPHICSPIXMAPITEM_H#define DISCBUTTONGRAPHICSPIXMAPITEM_H#include <QGraphicsObject>class DiscButtonGraphicsPixmapItem : public QGraphicsObject{ Q_OBJECTpublic: DiscButtonGraphicsPixmapItem(QString uuid,Q

2020-12-30 13:01:49 1686

原创 泛型算法:整个范围排序算法sort()、stable_sort()

1、sort()对于自定义类型,如果没有重载“<”运算符,那么使用sort()时要指定一个排序的函数。struct ceshi{ int frist = 0; int second = 0;};int main(int argc, char *argv[]){ QList<ceshi> list; ceshi c1; c1.frist = 1; c1.second = 2; ceshi c2; c2.fri

2020-12-29 22:51:32 389

原创 QT图形视图框架:自定义列表图形项

#ifndef LISTGRAPHICSPIXMAPITEM_H#define LISTGRAPHICSPIXMAPITEM_H#include <QGraphicsObject>//列表图形项class listGraphicsPixmapItem : public QGraphicsObject{ Q_OBJECTpublic: listGraphicsPixmapItem(QString uuid,QGraphicsItem *parent = nullp.

2020-12-29 13:32:38 790 1

原创 泛型算法:替换算法replace()、replace_if()、replace_copy()、replace_copy_if()

1、replace()自定义数据类型使用replace()的前提是重载了"=="运算符。struct ceshi{ int frist = 0; int second = 0; bool operator==(const ceshi &b) const { if(b.frist == this->frist && b.second == this->second) return true.

2020-12-28 13:29:39 754

原创 泛型算法:拷贝算法copy()、copy_n()、copy_if()、copy_backward()

struct ceshi{ int frist = 0; int second = 0;};int main(int argc, char *argv[]){ QList<ceshi> list; ceshi c1; c1.frist = 1; c1.second = 2; ceshi c2; c2.frist = 3; c2.second = 4; list << c1 << c.

2020-12-28 12:56:23 642

原创 插入迭代器

插入迭代器用于向容器中添加数据。 QJsonArray array; auto it = std::back_inserter(array); for(int i = 0;i < 5;++i) { QJsonObject obj; obj["index"] = i; *it = obj; ++it; } for(int i = 0;i < array.size();++i)

2020-12-26 15:55:25 207

原创 泛型算法:赋值算法fill()和fill_n()

fill()算法的参数,前两个是迭代器,要赋值的范围,第三个是要赋的值。 QJsonArray array; array.append(QJsonObject()); array.append(QJsonObject()); array.append(QJsonObject()); array.append(QJsonObject()); QJsonObject obj; obj["AA"] = "BB"; std::fill(std::

2020-12-25 13:29:37 379

原创 Qt编写自定义控件:圆形颜色选择控件

根据QT图形视图框架:自定义颜色选择饼图形项改的QWidget版本,原理一样,效果:

2020-12-24 22:42:09 1216 6

原创 QT图形视图框架:自定义颜色选择饼图形项

功能:色饼图形项,显示上图的色饼,点击后获取点击位置的颜色。原理:将点击时的位置转换成原图的位置,获取原图中该位置的像素的颜色。代码:#include <QGraphicsObject>class ColorBoardItem : public QGraphicsObject{public: ColorBoardItem(QString uuid,QGraphicsItem *parent = nullptr);protected: QVariant ..

2020-12-24 12:50:58 985

原创 泛型算法:判断序列相等算法equal()

equal()算法用来比较两个序列是否相等equal(序列1首元素迭代器,序列1尾元素后面的位置的迭代器,序列2首元素迭代器)序列1和序列2可以是不同类型的序列。比较的前提是元素可以使用“==”比较,对于自定义的数据,必须重载“==运算符”。struct ceshi{ int frist = 0; int second = 0; bool operator==(const ceshi &b) const { if(b.frist ==

2020-12-23 22:58:09 741

原创 泛型算法:数值操作算法accumulate()、inner_product()、partial_sum()、adjacent_difference()

头文件:#include <numeric>accumulate(start迭代器,end迭代器,和的初值)使用这个算法的前提是该类型可以使用“+”运算,求和的结果保存在第三个参数中 QStringList list; list <<"aa" <<"bb" <<"cc" << "dd"; auto result = std::accumulate(std::begin(list),std::end(list),Q

2020-12-23 13:33:21 427

原创 泛型算法:查找元素算法find()

std::vector<int> vec{1,2,3,4,5,6}; auto result = std::find(vec.begin(),vec.end(),99); qDebug()<<"查找结果"<< (result == vec.end());前两个参数是迭代器,没找到则返回第二个参数,所以用result == vec.end()判断查找结果。QT的容器也能用: QStringList list; list...

2020-12-22 23:03:14 672

原创 c++标准库中的关联容器

关键字有序的:1、map 保存key:value,key不可重复2、set 保存key,key不可重复3、multimap 保存key可重复出现的key:value4、multiset 保存key可重复出现的key关键字无序的:1、unordered_map2、unordered_set3、unordered_multimap4、unordered_multiset和上面的四个对应类似,就是key是无序储存的。...

2020-12-22 21:57:29 154

原创 Qt绘图:渐变

1、线性渐变线性渐变需要指定开始点和结束点,然后将开始点和结束点之间的区域进行等分,开始点的位置为0.0,结束点的位置为1.0,而它们之间的位置按照距离比例进行设定,然后使用在指定的位置插入指定的颜色。 QLinearGradient linearGradient(rect.topLeft(),rect.bottomRight()); linearGradient.setColorAt(0.0,Qt::red); linearGradient.setColorAt(1.0,Q

2020-12-20 16:12:35 2567

原创 QT绘制的几个知识点

1、画圆弧函数drawArc(const QRect &rect, int startAngle, int lenAngle)的三个参数弧形的圆心是矩形的中心。2、fillRect()使用颜色或画刷填充一个矩形3、eraseRect()擦除一个矩形范围的内容

2020-12-20 14:33:14 1073

原创 QT绘图:旋转的圆形头像

酷狗手机版播放音乐的时候在播放按钮上面会显示一个旋转的歌手圆形头像,现用qt绘制窗口来实现这一功能。1、首先是画圆,因为不知道窗口大小,要根据窗口的宽高大小来确定。 QPainter painter(this); painter.setPen(Qt::NoPen); painter.setRenderHint(QPainter::Antialiasing, true); QPoint centerPoint = rect().center(); painte

2020-12-19 20:03:58 1151

原创 vector对象是如何增长的

《c++ primer》 9.4问题:vector储存元素在内存中是要连续存放的,假如要向其中添加元素则容器每次要申请新空间存放原来的元素和新元素并且释放原来的空间。对性能影响极大。策略:为了避免这种情况,标准库的实现者采用的方式是当要申请空间时,申请的比所需的空间大的空间作为备用。 std::vector<int> vec; vec.reserve(10); qDebug() << vec.size() << endl; q

2020-12-19 11:18:45 207

原创 顺序容器常用操作——交换容器中的元素、增删元素

1、交换容器中的元素 std::list<int> a = {1,2,3}; std::list<int> b = {4,5}; a.swap(b); qDebug()<<a<<b; std::array<int,5> c; std::array<int,5> d; c.swap(d);只能交换相同存放数据类型的容器,定长数组array只能与同样长度的array交换

2020-12-17 22:13:54 294

原创 迭代器

《c++ primer》9.2.1章节1、迭代器范围由一对迭代器表示:begin、end。2、end指向尾元素之后的位置:3、end可以指向和begin相同的位置,但不能指向begin前面的位置。(编译器不强制,确保符合此要求是程序员的责任)4、假如begin和end构成了一个合法迭代器范围则:如果begin == end,范围为空 如果begin != end,范围不为空且begin指向第一个元素 ++begin若干次后将使得begin == endwhlie(begin.

2020-12-16 13:24:58 169

原创 重置文件夹

void resetTempFolder(QString filePath){ QFile uiFile(filePath); QFileInfo info(uiFile); QDir dir(info.absoluteDir()); if(dir.exists(QStringLiteral("tempFolder"))) { dir.cd(QStringLiteral("tempFolder")); dir.removeRecur.

2020-12-15 10:58:23 325

原创 Qt在Release模式下调试

默认Release模式下是不能调试的,只需要加上:QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFOQMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO即可使用调试,但是要注意这样会使生成的exe文件大小急剧增大(亲测从11MB—>360MB),所以发布正式版本的时候要注释掉这两句。...

2020-12-15 09:55:33 3545 1

原创 c++标准库中的顺序容器和使用原则

《c++ primer》9.1章节1、vector:大小可变的数组,可快速随机访问元素,在尾部之外的地方删除、插入较慢,元素储存在连续的内存空间;2、deque:双端队列,可快速随机访问元素,在头尾删除、插入很快;3、list:双链表,不能快速随机访问元素,要访问元素只能双向顺序遍历,在任意地方插入、删除都很快,额外内存开销大(除了储存元素还有储存地址);4、forward_list:单链表,不能快速随机访问元素,要访问元素只能单向顺序遍历,在任意地方插入、删除都很快(额外内存开销大);

2020-12-14 23:17:20 196

原创 C++/Qt随机数

1、c++标准库随机数标准库随机数由引擎和分布两部分构成。头文件:#include <random>生成0~9的均匀分布的随机数: std::uniform_int_distribution<int> u(0,9);//均匀分布 std::default_random_engine e;//随机数引擎 qDebug()<<"随机数引擎可产生随机数的范围:"<<e.max()<<e.min(); for(i

2020-12-13 23:47:15 1670

原创 QT风格(QStyle):绘制一个自定义QSlider

代码:#ifndef SLIDERSTYLE_H#define SLIDERSTYLE_H#include <QProxyStyle>class SliderStyle : public QProxyStyle{public: SliderStyle(); void drawComplexControl(ComplexControl which,const QStyleOptionComplex *option,QPainter *painter,cons..

2020-12-12 16:28:29 2010

原创 视图设置网格线和设置背景的方法

qt的demo中有个用图形试图框架绘制流程图的demo,里面是这样设置场景的网格背景的:setBackgroundBrush(QPixmap(":/images/background1.png")若要对视图设置背景,方法是:void drawBackground(QPainter *painter, const QRectF &rect){ painter->drawPixmap(rect,QPixmap(":/img/back.jpg"),QRectF());}

2020-12-10 23:29:28 1441

原创 QT属性表控件:新增自定义属性类型

QT属性表支持设置的属性时根据QVariant确定的,但是qt属性表并没有为每一种QVariant类型实现一种属性管理器。默认属性表实现了以下属性管理器:1、QtIntPropertyManager int类型2、QtDoublePropertyManager double类型3、QtDoublePropertyManager bool类型4、QtStringPropertyManager QString类型5、QtDatePropertyManager 日期类型6、QtTim.

2020-12-10 15:57:00 5489 14

原创 图形视图框架视图和场景概念的理解

来自《Qt学习之路2(30)》:场景就好比一个小世界,里面有很多图形项,视图是照相机的取景框,我们可以移动取景框观察世界,取景框可以只显示世界的一部分,也可以覆盖整个世界。一个场景可以有多个视图,典型的例子是qt自带的模拟芯片demo,开启多台相机对准了小世界。...

2020-12-08 22:31:43 663

原创 QT图形视图框架:自定义滑动条图形项

代码:#ifndef SLIDERGRAPHICSPIXMAPITEM_H#define SLIDERGRAPHICSPIXMAPITEM_H#include <QGraphicsObject>class sliderGraphicsPixmapItem : public QGraphicsObject{ Q_OBJECTpublic: sliderGraphicsPixmapItem(QString uuid,Qt::Orientation orientat

2020-12-07 18:51:14 879

原创 QT风格(QStyle):绘制一个自定义QComboBox

绘制QComboBox即把QComboBoxd组成元素绘制出来。元素如下:这三个都是子控件,可交互的,图标元素默认是PE_IndicatorArrowDown,一个下箭头。绘制设计图:过程实在没啥好说的,绘制套路和前面都一样,无非是确定好子控件/子元素位置,然后在相应位置绘制需要绘制的内容。完整代码:.h文件:#ifndef MYCOMBOBOXSTYLE_H#define MYCOMBOBOXSTYLE_H#include <QProxyStyle>

2020-12-06 23:44:46 3558 3

原创 QT风格(QStyle):绘制一个自定义QProgressBar

参考:[Qt]自定义QStyle——实现QProgressBar自定义样式参考:QStyle Progress Bar 样式设计(十七)前面已经知道了绘制控件只需要把控件的子元素/子控件绘制出来即可。一个默认的QProgressBar子元素如下:QProgressBar只有子元素没有子控件(可以与之交互的是子控件,只能展示不能交互的叫子元素)设计图:根据这个设计图,各个子元素的位置:QRect myProgressBarStyle::subElementRect(Su.

2020-12-06 17:00:47 2671 2

原创 QT风格(QStyle):绘制一个自定义QSpinBox(3)

按照之前的方法再来绘制两个QSpinBox。设计图:根据这个设计图改写子控件位置:QRect mySpinboxStyle::subControlRect(ComplexControl whichControl,const QStyleOptionComplex *option,SubControl whichSubControl,const QWidget *widget) const{ if (whichControl == CC_SpinBox) { .

2020-12-05 15:25:40 713

原创 QT风格(QStyle):绘制一个自定义QSpinBox(2)

按上一篇绘制自定义QSpinBox的过程,再来绘制一个QSpinBox。设计图:把按钮放上面在这之前先看一下成品:上一篇说了,绘制自定义QSpinBox实际上就是给QSpinBox中的这些原始组成元素指定好位置并绘制出来。设计这些元素的尺寸如下:即确定子控件位置的subControlRect()函数:QRect mySpinboxStyle::subControlRect(ComplexControl whichControl,const QStyleOpt..

2020-12-04 23:53:47 1140 1

原创 图形项强制类型转换的一个坑

今天项目中发现一个问题,我定义了两个类型的图形项A类和B类,都是继承QGraphicsObject。在场景中获取选中的图形项: QList<QGraphicsItem *> list = deviceGraphicsScene->selectedItems();当要判断类型是时: QGraphicsItem * item = list.first(); if(A* deviceItem = static_cast<A*>(item))

2020-12-04 14:05:21 594

原创 QT风格(QStyle):绘制一个自定义QSpinBox

参考《c++ qt4编程(第二版)》19.2章节一个QSpinBox的组成部分如下:使用QStyle绘制默认的QSpinBox就会绘制这些元素:这就是QStyle绘制的默认QSpinBox。要绘制一个 自定义的QSpinBox只需要在自定义的风格里面绘制这几个元素就行了。从drawComplexControl函数开始绘制:这里drawBronzeSpinBoxButton()函数用来绘制上下按钮,即这两个,void BronzeStyle::dr..

2020-12-02 23:55:17 1400

原创 定位new表达式

来自《c++ Primer》19.1.2章节一般使用new运算符时会在堆内存申请一块内存空间并将地址赋给指针。这个地址是不能由用户确定的。所谓定位new表达式是指使用new运算符后返回的是已知的用户指定的地址,不管它是否已经被使用,而且可以看到新值直接覆盖在旧值上面。 int a = 10; qDebug()<<&a; QString * s = new(&a)QString; *s = "xxx"; qDebug()<&

2020-12-01 22:40:11 576

lvgl8.1 中文输入法控件

见:https://blog.csdn.net/kenfan1647/article/details/136928635

2024-03-22

minizip库源码,包含了所依赖的zip库的文件,可以直接添加到工程

minizip库源码,包含了所依赖的zip库的文件,可以直接添加到工程

2024-03-01

编译好的qt5.15.2(mingw)和lvgl(8.1)版本的库,包含测试工程,可以直接运行

编译好的qt.15.2(mingw)和lvgl(8.1)版本的库,包含测试工程,可以直接运行

2024-02-19

台达DVP16ES2-qt串口通信测试程序

台达DVP16ES2-qt串口通信测试程序 https://blog.csdn.net/kenfan1647/article/details/135905969

2024-01-29

Qt编写的模拟鼠标按下和按键按下的小工具

包含运行文件和源代码。 资源介绍:https://blog.csdn.net/kenfan1647/article/details/126944542

2022-09-19

Qt和ffmpeg环境搭建好的工程

Qt和ffmpeg环境搭建好的工程,解压即可用

2022-03-06

Qt带阴影和圆角的弹窗.zip

详见:https://blog.csdn.net/kenfan1647/article/details/115205818

2021-03-25

qt爬虫下载图片.zip

详见https://blog.csdn.net/kenfan1647/article/details/113776490

2021-02-10

QT圆形颜色选择控件.zip

QT圆形颜色选择控件,详见:https://blog.csdn.net/kenfan1647/article/details/111657872

2020-12-24

qt动画缓和曲线.zip

详见:https://blog.csdn.net/kenfan1647/article/details/109847925

2020-11-20

DomXmlEdit.zip

qt编写的xml编辑器,见:https://blog.csdn.net/kenfan1647/article/details/109684725

2020-11-13

websocket.zip

qwebsocket客户端和服务端,包含通信、发送文件功能 见:https://blog.csdn.net/kenfan1647/article/details/109560568

2020-11-08

RegExp.zip

一个qt正则表达式匹配工具,见:https://blog.csdn.net/kenfan1647/article/details/109429187

2020-11-01

SqlEdit.zip

一个简单的QSQLITE工具,详见https://blog.csdn.net/kenfan1647/article/details/109373355

2020-10-29

ParsingJsonEdit.zip

自动解析json的QTextEdit 。

2020-10-25

ShowJsonWidget.zip

QT编写的控件,带行号的QTextEdit 。

2020-10-25

websocket通信服务端与客户端.zip

QT网络编程之通信客户端和消息转发服务端,详见:https://blog.csdn.net/kenfan1647/article/details/108895615

2020-10-01

WebSocket.zip

QWebSocket 客户端,详见 https://blog.csdn.net/kenfan1647/article/details/108895032

2020-10-01

WebSocketServer.zip

QT网络编程之QWebSocketServer构建服务端的demo,详见:https://blog.csdn.net/kenfan1647/article/details/108893255

2020-10-01

qml版的vlc播放器

qml版的vlc播放器代码和库文件,mingw7.3版本编译器编译出来的库,64位 推荐5.14以上版本的qt运行

2020-09-20

QT插件子工程.zip

QT插件工程和调用插件的工程集成到一个工程里,直接修改插件内容点击运行即可看到效果 详见:https://blog.csdn.net/kenfan1647/article/details/107508484

2020-07-22

QT插件通信demo.zip

qt插件间相互通信的demo,https://blog.csdn.net/kenfan1647/article/details/107493294

2020-07-21

qt各种控件和示例 20200613.zip

大量qt控件和示例,qt5.8以上版本才能不用修改直接运行,控件大部分收集自网络上的开源控件

2020-06-13

QT_Plugin demo.zip

QT插件开发demo,使用插件管理器管理插件,详见:https://blog.csdn.net/kenfan1647/article/details/105889912

2020-05-02

OpenCV 4.2.0 && Qt5.14.1 编译好的库

OpenCV 4.2.0 && Qt5.14.1 编译好的库 仅限于release模式 MinGW版 已集成了pri子工程,包含到pro文件里就能用 包含opencv_contrib模块

2020-03-22

便捷式OpenCV图像处理工具.zip

便捷的opencv图像处理工具,不用再编译库直接运行,可拖动打开图片

2019-08-28

QTableView鼠标滑过整行背景色改变.zip

QTableView鼠标滑过整行背景色改变 整理自:https://zhidao.baidu.com/question/572964103.html 的回答

2019-07-09

qt_vs2015_opencv410_release.zip

编译好的opencv4.1.0(包含了opencv_contrib ) qt5.7.1(vs2015 32位编译器)工程,使用5.7.1版本的qt直接打开无需再配置 注意:是release版的,只能用于release模式

2019-06-06

msvs编译器 VS2015版32位QT qt_msvs_opencv346_build.zip

编译好的vs2015版的32位OpenCV3.4.6QT工程,解压后可运行,无需再配置

2019-05-18

空空如也

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

TA关注的人

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