自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 QtWidget使用Fluent组件库

该组件库的下载地址:[fluent ui组件库](https://github.com/Liniyous/ElaWidgetTools)。下载后解压,使用Qt Creator打开,注意必须是Qt6或者Qt5.15以后的版本

2024-06-15 21:33:21 523

原创 Qt5+Opencv插件式开发

插件(Plug-in,又称addin、add-in、addon或add-on,又译外挂)是一种遵循一定规范的应用程序接口编写出来的程序。其只能运行在程序规定的系统平台下(可能同时支持多个平台),而不能脱离指定的平台单独运行。因为插件需要调用原纯净系统提供的函数库或者数据。很多软件都有插件,插件有无数种。例如在IE中,安装相关的插件后,WEB浏览器能够直接调用插件程序,用于处理特定类型的文件。在开发机器视觉项目通常使用QtWidget作为GUI框架,使用Opencv或者Halcon作为视觉算法框架。

2023-10-06 22:39:08 351

原创 QWidget实现开关按钮

首先是使用Q_PROPERTY将开关按钮的属性注册到Qt的元对象系统重,方便后续将开关控件集成到QtDesigner设计师界面中:如下是开关控件的属性:在绘制时,首先将上面属性中的颜色初始化://设置选中和未被选的画笔颜色elseelse//绘制外部大圆//绘制内圆绘制效果如下://鼠标点击(左键点击)else//鼠标松开checked =!checked;//改变状态//状态改变后,更改动画效果else//状态改变函数。

2023-10-04 22:38:34 886

原创 Qt实现TCP网络通信

在标准C++中没有提供专门用于套接字通信的类,所以只能使用操作系统提供的基于C语言的API函数,基于这些C的API函数我们也可以封装自己的C++类。或者我们可以使用Qt框架,它提供了用于套接字通信的类(TCP、UDP)这样我们就可以直接调用相关API即可。QTcpServer:服务器类,用于监听客户端连接以及和客户端建立连接。QTcpSocket:通信套接字类,客户端与服务器都需要使用这个类。最后要使用这两个类,我们需要在Qt的.pro文件中添加network(网络模块)。

2023-10-01 23:18:59 1609

原创 thread的使用

在上面的示例程序中有一个 bug,在主线程中依次创建出两个子线程,打印两个子线程的线程 ID,最后主线程执行完毕就退出了(主线程就是执行 main () 函数的那个线程)。如上我们在主线程中执行interact()这个交互函数,子线程执行文件下载的函数,当主线程执行完成后,不会立马退出程序和回收资源,程序会陷入阻塞,等待下载文件的子线程完成,才会退出程序。但是子线程对象中的任务函数会继续执行,当任务执行完毕之后join()会清理当前子线程的相关资源然后返回,同时,调用该函数的线程解除阻塞继续向下执行。

2023-09-28 22:54:21 127

原创 chrono时间库

可以使用std::this_thread::sleep_for代替Unix操作系统专有的usleep。除了接受一个时间段sleep_for,还有接受一个时间点的sleep_until,表示让当前线程休眠到某个时间点。利用CPP强类型的特点,明确区分时间点和时间段,明确区分不同的时间单位。

2023-09-27 23:24:14 82

原创 Qt暗黑风格无边框可拉伸窗体

在使用Qt开发软件时,通常会通过布局以及Qss美化界面,但窗体自带的标题栏不符合软件开发的需求,所以必须去掉Qt自带的标题栏,但去掉后就会失去窗体的之前的属性,比如自由拉伸以及可以拖拽标题栏等。暗黑无边框窗体。

2023-06-19 21:46:04 496

原创 QSS美化控件教程(一)

在使用Qt开发界面程序时,常用控件的美化是一件繁琐的事情,收藏一些基本控件的美化样式,可以在项目开发时节省大量时间,本篇文章由此而出,收集常用的控件美化样式。以下qss代码是直接在Qt Designer设计界面中样式表中添加或者使用QFile读取qss代码进行修改控件样式。

2023-04-25 22:23:26 1771 1

原创 QCustomPlot的使用教程(二)

上一节中简单介绍了如何使用QCustomPlot绘制一条简单的曲线,下面将介绍如何通过QCustomPlot绘制多条曲线。

2023-04-22 19:24:58 589

原创 QCustomPlot的使用教程(一)

QCustomPlot是Qt的一个小型第三方图表库,支持静态/动态曲线、柱状图、蜡烛图、频谱图等。使用方便,仅需在项目中加入头文件qcustomplot.h和qcustomplot.cpp源文件即可,或者把它当做一个库来添加到项目当中,该绘图库专注于制作美观、出版物质量高的2D绘图、图形和图表,并为实时可视化应用程序提供高性能。

2023-04-14 23:01:14 1478

原创 Qt实战-通用软件界面

该项目是通过Qt Desinger设计师进行ui界面设计,然后通过Qt自带的属性动画来实现侧边栏的拉伸与收缩,下面将介绍界面如何设计。

2023-03-22 19:32:24 937 2

原创 Qt实战-程序启动动画

很多的商用软件在启动之前都会有一段启动动画,当启动动画消失时,软件的主界面也就会呈现。程序的启动动画可以帮助我们了解到软件的一些相关信息,下面将介绍一个我自己设计的比较美观的程序启动动画。

2023-03-17 13:17:11 689

原创 Qt MVC之自定义代理

在Qt的MVC(Model-View-Controller)架构中,代理(Delegate)扮演着很重要的角色。代理用于控制Model在View中的显示方式,并负责处理用户与View的交互事件。在一些特殊的情况下,Qt提供了一些内置代理(例如QStyledItemDelegate、QItemDelegate等)用于控制View的显示方式。但是有时候,我们需要更加灵活地控制View的显示方式,这时就需要自定义代理。自定义代理需要继承。

2023-03-16 14:18:50 370

原创 Qt MVC之自定义Model

在Qt中,MVC(Model-View-Controller)模式是常用的模式之一,用于将应用程序中的数据(Model)与用户界面(View)分离开来。自定义模型允许开发者使用自己的数据结构作为模型,并将其与Qt的视图部件结合使用。自定义模型需要实现Qt中的抽象模型类(QAbstractItemModel)中的纯虚函数。其中,最基本的函数包括rowCount()、columnCount()、data()和index()函数。

2023-03-15 14:31:30 611

原创 Qt MVC结构之Model模型

MVC 就是Model-View-Control模式的简称,包括模型层(Model), 视图层(View), 控制层(Controller)。Model主要负责管理数据,View主要用来显示数据,Controller主要用来操作数据,控制View联动。Qt也采用了这个模式,模型层用Model,视图层用View,控制层改名叫了代理Delegate

2023-03-14 13:47:54 383

原创 QGraphicsView进阶篇

QGraphicsView 通过 QGraphicsView::setMatrix() 支持和 QPainter 一样的仿射变换,通过对一个视图应用变换,你可以很容易地支持普通的导航特性如缩放与旋转。

2023-03-10 19:41:45 259

原创 QGraphicsView初级篇

QT4.2开始引入了Graphics View框架用来取代QT3中的Canvas模块,并作出了改进,**QGraphicsView框架实现了模型-视图结构的图形管理,能对大量图元进行管理,支持碰撞检测,坐标变换和图元组等多种方便的功能**。

2023-03-08 20:37:37 384

原创 QtWidget绘制电池控件

使用QPainter来进行绘制自定义的控件,然后通过QTimer来实现电池控件的电量变化效果,效果图如下:

2023-01-26 18:47:53 866 1

原创 QPainter的使用

Qt的绘图系统允许使用相同的API在屏幕和其他打印设备上进行绘制,整个绘图系统基于QPainter、QPaintDevice和QPaintEngine三个类。**QPainter用来执行绘制操作,QPaintDevice是一个抽象的二维空间,这个抽象的二维空间允许QPainter在上面进行绘制,也就是QPainter的工作空间。QPaintEngine为QPainter提供了在不同设备上进行绘制的接口**。QPaintEngine类应用于QPainter和QPaintDevice之间,通常对开发

2023-01-25 20:24:31 2472

原创 C++Logger日志库的实现

该项目是基于C++实现的简单日志库系统,代码方面大约200多行,比较简单,封装的接口很容易看懂,使用起来也十分方便,通过定义的宏来实现打印输出到日志文件中。

2023-01-19 13:39:53 3493 4

原创 可调用对象和可调用对象的包装器

可调用对象是C++11引入的概念,可以像函数调用方式的触发调用的对象就是可调用对象。如下是可调用对象的几种定义:

2023-01-17 14:31:22 235

原创 string和string_view用法指南

我们编写的每个应用程序都会使用某种类型的字符串,使用C语言时,没有太多选择,只能使用普通的以'\0'结尾的字符数组表示的字符串。这种表达方式会导致许多问题,例如会导致安全漏洞的缓冲区溢出,C++标准库包含一个安全易用的std::string类,这个类符合RALL思想,没有这些缺点。

2023-01-15 14:45:02 2271

原创 C++11之基于范围的for循环

在C++98中,不同的STL容器和C风格数组的遍历方式各不相同,写法也不统一,而且不够简洁。而C++11基于范围的for循环可以简洁并且统一的方式遍历STL容器和C风格数组。

2023-01-13 19:51:47 1276

原创 QtWidget使用Material风格的组件库

该组件库拥有炫酷的Material风格的组件,并且该组件库基于QtWidget开发的,目前实现了大约20个Material风格的组件,下面教大家如何编译该组件库,并将这个组件库运用到自己的项目中。

2023-01-12 19:36:26 9876 18

原创 共享智能指针

共享智能指针是指多个智能指针可以同时管理同一块有效的内存,共享智能指针shared_ptr是一个模板类,如果要进行初始化有三种方式:通过构造函数、std::make_shared辅助函数以及reset方法

2023-01-11 14:02:09 956

原创 RALL原则和unique_ptr

RALL是resource acquisition is initialization的缩写,意思是”资源获取即初始化”**。它是C++之父Bjarne Stroustrup提出的设计理念,**其核心是把资源和对象的声明周期绑定,对象创建获取资源,对象销毁释放资源

2023-01-09 14:11:21 689

原创 资源转移和完美转发

在C++11中添加了右值引用,并且不能使用左值初始化右值引用,如果想要使用左值初始化一个右值引用需要借助std::move()函数,使用std::move方法可以将左值转化为右值。使用这个函数并不能移动任何东西,而是和移动构造函数一样具有移动语义,将对象的状态或者所有权从一个对象移动到另一个对象上,只是转移,没有内存拷贝

2023-01-08 14:35:20 130

原创 右值引用

C++11增加了一个新的类型,称为**右值引用(R-value reference)**,标记为 **&&**。在介绍右值引用类型之前要先了解什么是左值和右值

2023-01-07 20:08:12 1309

原创 1、原始字面量简介

C++11新特性-原始字面量

2023-01-07 15:50:14 252

空空如也

空空如也

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

TA关注的人

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