自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

灰猫丫的博客

咸鱼也要做最咸的那条

  • 博客(36)
  • 资源 (3)
  • 收藏
  • 关注

原创 Qt开源作品-跨平台串口通信服务进程(CatSerialServer)

前言CatSerialServer是一个跨平台串口通信服务进程,或许有疑问为什么串口通信要用独立进程放在客户端主进程上不好吗,也不是不可以而是在windows系统会有点问题,如果你客户端UI主程序程序用了windows原生边框,以及去掉了边框而去边框的底层实现是使用了windows原生的API,重写nativeEvent,这些方式在界面拖到改变大小的时候都会阻塞了串口底层数据收发,考虑过多种方式解决该问题,最后考虑使用多进程方式解决。软件架构使用Qt RemoteObjects作为进程间通信方式之

2021-11-09 23:58:11 2042

原创 QtQuick 基础教程 第三课: QML State状态与Transition变换

State QML 类型所有项目都有一个默认状态,用于定义对象和属性值的默认配置。可以通过将State项添加到states属性定义新状态,以允许项在不同配置之间切换。特性:/* 此属性包含要应用于此状态的更改,默认情况下,这些更改是针对默认状态应用的。如果该状态扩展了另一个状态,则对正在扩展的状态应用更改。*/changes: list<Change>/*此属性保存此状态扩展的状态。当一个状态扩展另外一个状态时,它会继承该状态的所有更改。对于扩展状态指定的更改,正在扩展的

2021-09-08 16:34:16 441

原创 QtQuick 基础教程 第二课: QML类型系统

基本类型类型描述int整型bool布尔值real单精度浮点数double双精度浮点数string字符串url资源定位符listQML对象列表var通用属性类型enumeration枚举值类型描述colorARGB颜色值,可以用多种方法表示fontQFont的QML类型,包含了QFont的属性值matrix4x4一个4行4列的矩阵quaternion一个四元数,包含一个标

2021-08-27 17:24:03 576

原创 QtQuick 基础教程 第一课: import用法

模块导入通用形式如下:import <ModuleIdentifier> <Version.Number> [as <Qualifier>]import 声明导入一个指定的模块,同目录下的qml文件不需要import,直接在元素中声明即可。//import QtQuick 2.0 as Quick 可以使用as使用命名空间,解决冲突类型名称的模块import QtQuick 2.12 as QuickQuick.Rectangle { width: 10

2021-08-09 10:58:46 2216

原创 Qml基于锚(anchors)的布局

锚(anchors)布局,每一个项目都可以认为有一组无形的锚线left,horizontalCenter,right,top,verticalCenter,baseline和bottom.如上图:图中没有显示baseline,它是一条假想的线,文本坐落在这条线上。对于没有文本的项目它与top相同。使用锚布局7条锚分别对应了Item项目中的anchors属性组的相关属性。因为Qt Quick中所有可视项目都继承自Item,所以所有可视项目都可以使用锚进行布局。Qt Quick的锚定系统允许不同项目

2021-04-09 14:53:00 1315 1

原创 ansible模块说明

Ansible 的模块工作原理Ansible对远程服务器的操作实际是通过模块完成的。将模块拷贝到远程服务器执行模块定义的操作,完成对服务器的修改在远程服务器中删除模块Ansible中的模块是幂等的。也就是说,多次执行相同的操作,只有第一次会起作用。这也是在编写自定义Ansible模块时需要注意的地方。模块列表与帮助信息Ansible的模块非常多,如果以模块的功能进行分类,可以分为:云模块命令模块数据库模块文件模块资产模块消息模块监控模块网络模块通知模块包管理模块

2021-04-09 14:47:10 488

原创 FFmpeg的基本组成

FFmpeg的基本组成AVFormat(封装模块)AVCodec(编解码模块)AVFilter(滤镜模块)AVDevice(音视频设备模块)AVUtil(实用库,用于辅助多媒体编程)Swscale(视频图像转换计算模块)Swresample(音频转换计算模块)封装模块AVFormatAVFormat中实现了目前多媒体领域中的绝大多数媒体封装格式,包括封装和解封装,如MP4,FLV,KV,TS等文件封装格式,RTMP,RTSP,MMS,HLS等网络协议封装格式。FFmpeg是否支持某种

2021-04-09 14:44:34 198

原创 win10 + vs2019 编译 openssl

系统环境* win10 64位* Perl 64位Perl下载地址编译64位release/debug版以管理员方式启动(x86_x64 Cross Tools Command Prompt for VS 2019)cd 到openssl 目录[release]Perl Configure VC-WIN64A no-asm --prefix=编译后的文件路径namke // 编译nmake test //执行测试代码nmake install [debug]Perl

2021-04-09 14:42:00 445

原创 C++ Boost Asio I/O服务,I/O对象,网络编程

I/O 服务与I/O 对象使用Boost的Asio进行异步处理数据的应用程序基于两个概念:I/O服务I/O对象I/O服务抽象了操作系统的接口,允许第一时间进行异步数据处理,而I/O对象则初始化特定的操作。// I/O服务boost::asio:io_service// 用于网络发送和接收数据boost::asio::ip::tcp::socket// 计时器boost::asio::deadline_timer#include<boost/asio.hpp>

2021-04-09 14:38:08 284

原创 C++ 常用IO库

Iostream库包含以下头文件fstreamiosiostreamostreamstreambufiomainipiosfwdistreamsstreamstrstreamiostream(从流读写操作)iostream库定义以下三个标准流对象:cin: 表示标准输入(standard input)的istream类对象。可以从设备读入数据。cout:表示标准输出(standard output)的ostream...

2021-04-09 14:36:28 320 1

原创 C++STL容器

STL 不同容器间的差异| | Vector | deque | list | set | multiset | map | multimap || ------------ | ------------ | ------------ | ------------ | ------------ || 存储结构 | 单端数组 | 双端数组 | 双向链表 | 二叉树 | 二叉树 | 二叉树 | 二叉树 || 是否为键值对 | 否 | 否 | 否 | 否 | 否 | 是 | 是 ||

2021-04-09 14:26:37 151 1

原创 学习与素材资源记录

Qt学习资源名字地址C语言中文网Qt国内下载通道http://c.biancheng.net/view/3851.htmlQt Design Studio(qml设计师工具)http://download.qt.io/official_releases/qtdesignstudio/Qt官方下载渠道http://download.qt.io/archive/Qt 3D Studio(Qt3D设计师工具)http://download.qt.io/officia

2021-04-09 14:19:45 292

原创 Qt Quick 定位器(Positioners)

定位器定位器是一个容器,可以管理其子项目的布局。定位器包括Column,Row,Grid和Flow。如果他们的子项目不可见(visible为false),宽度或者高度为0,那么该子项目不会显示,也不会被布局。定位器可以自动布局其子项目,也就是说,其子项目不再需要显示设置x,y等坐标或使用anchors锚进行布局。下面分别介绍Column, Row, Grid 和 Flow. 可在帮助中心通过Item Positioners关键字查看。Column将其子项目排成一列import QtQuick

2021-03-31 00:41:28 724

翻译 Qt SQL C++ Classes

类名说明QSqlDatabase处理到数据库的连接QSqlDriverCreator模板类,为特定的驱动程序类型提供SQL驱动程序工厂QSqlDriverCreatorBaseSQL驱动工厂基类QSqlDriver用于访问特定SQL数据库的抽象基类QSqlDriverPlugin自定义QSqlDriver插件的抽象基础QSqlErrorSQL数据库错误信息QSqlField操作SQL数据库表和视图中的字段QSqlIndex用于操作...

2021-03-31 00:37:07 85

原创 Qt 获取网络接口信息

QHostInfo提供了一个静态函数,允许您自己通过使用主机名执行此类查找。QHostInfo在建立网络连接之前,QTcpSocket和QUdpSocket执行一个名称查找,将所连接的主机名转换为一个IP地址。此操作通常使用DNS(域名服务)协议执行。QHostInfo提供了一个静态函数,允许您自己执行此类查找。通过使用主机名、QObject指针和槽签名调用QHostInfo::lookupHost(), QHostInfo将执行名称查找,并在结果准备好时调用给定槽。实际的查找是在单独的线程中完成的,

2021-03-31 00:35:33 806

原创 Qt 事件系统

事件系统是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的通称,Qt中使用一个对象来表示一个事件,继承自QEvent类。Qt中的事件事件与信号并不相同,比如单击一下界面上的按钮,那么就会产生鼠标事件QMouseEvent(不是按钮产生的),而因为按钮被按下了,所以它会发射clicked()单击信号(是按钮产生的),这里一般只关心按钮的单击信号,而不用考虑鼠标事件,但是如果要设计一个按钮,或者单击按钮时让它产生别的效果,那么就要关心鼠标事件了。事件处理一个事件由一个特定的QEven

2021-03-31 00:31:05 98

原创 Qt 模态与非模态

模态对话框(Modal Dialog)与非模态对话框(Modeless Dialog)模态窗体在该窗体没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,与切换,知道该对话框窗体关闭。QDialog *dialog = new QDialog(this);dialog->setModal(true);dialog->show();非模态窗体当被打开时,用户即可选择和该对话框交互,也能与同个应用程序的其他窗体交互。QDialog *dialog = new QDialog

2021-03-31 00:29:08 179

翻译 Qt GraphicsView图形视图框架(Graphics View Framework)

Graphics View提供了一个surface,用于管理大量定制的2D图形项并与之交互,还提供了一个View小部件,用于可视化项目,并支持缩放和旋转.该框架包含一个事件传播框架,该架构允许对场景中的项目提供精确的双精度交互功能.项目可以处理按键事件,鼠标按下,移动,释放和双击事件,还可以跟踪鼠标移动。Graphics View使用BSP(二进制空间划分)树来提供非常快速的项目发现,因此,它可以实时地可视化大型场景,甚至是数百万个项目.注意: 该图形视图在Qt4.2引入,取代了它的前身QCanvas

2021-03-25 20:28:26 2119

原创 Qt基于QGraphicsView 实现四个教具之一直尺(一)

前言Graphics View提供了一个surface,用于管理大量定制的2D图形项并与之交互,还提供了一个View小部件,用于可视化项目,并支持缩放和旋转.该框架包含一个事件传播框架,该架构允许对场景中的项目提供精确的双精度交互功能.项目可以处理按键事件,鼠标按下,移动,释放和双击事件,还可以跟踪鼠标移动。Graphics View使用BSP(二进制空间划分)树来提供非常快速的项目发现,因此,它可以实时地可视化大型场景,甚至是数百万个项目.如何实现教具直尺需要先设计所有教具的基类继承基类设计

2021-03-21 23:35:50 1225 1

翻译 Qt Qss样式表

Qt样式表简介QSS样式表允许用户定制widgets组件外观,与前端CSS语法类似。子类化QStyle也可以定制widgets组件外观。QT样式表编程通过文件设置QSS将QSS代码写入.qss 文件,将.qss 文件加入资源文件qrc.qrc中,在代码中读取QSS文件设置组件QSSQFile file(":/qss/test.qss");file.open(QIODevice::ReadOnly);QString styleshoot = QLatinlString(file.readAl

2021-03-21 13:34:42 1235

翻译 Qt中的事件

事件与信号并不相同,比如单击一下界面上的按钮,那么就会产生鼠标事件QMouseEvent(不是按钮产生的),而因为按钮被按下了,所以它会发射clicked()单击信号(是按钮产生的),这里一般只关心按钮的单击信号,而不用考虑鼠标事件,但是如果要设计一个按钮,或者单击按钮时让它产生别的效果,那么就要关心鼠标事件了。事件处理一个事件由一个特定的QEvent子类来表示,但是有时一个事件又包含多个事件类型,比如鼠标事件又可以分为鼠标按下,双击和移动等多种操作。这些事件类型都由QEvent 类的枚举型QEven

2021-03-21 13:33:01 63

翻译 Qt QFrame类

QFrame类是带有边框的部件的基类。它的子类包括最常用的标签部件QLabel,另外还有QLCDNumber,QSplitter,QStackedWidget,QToolBox和QAbstractScrollArea类。QAbstractScrollArea类是说有带有滚动区域的部件类的抽象基类,这里需要说明,Qt中凡是带有Abstract字样的类都是抽象基类。抽象基类是不能直接使用的,但是可以继承该类实现自己的类,或者使用它提供的子类。QAbstractScrollAread的子类中有最常用的文本编辑器类

2021-03-21 13:31:04 1429

原创 Qt Widget 布局管理系统

Qt的布局管理系统提供了强大的机制来自动排列窗口中的部件,确保它们有效的使用空间。QLayout的几个子类,这里将它们称作布局管理器。所有QWidget的子类的实例(对象)都可以使用布局管理器管理位于它们之中的子部件,QWidget::setLayout()函数可以在一个部件上应用布局管理器。一旦一个部件上设置了布局管理器,那么它会完成以下几种任务:定位子部件感知窗口默认大小感知窗口最小大小窗口大小变化时进行处理当内容改变时自动更新字体大小,文本或子部件的其他内容随之改变.

2021-03-21 13:28:21 957

翻译 Qml性能优化总结

原作者:林斌邮箱:richard.lin@qt.ioQt Quick性能优化使用事件驱动避免定时轮询使用信号与槽使用多线程开发C++多线程,QThread,或者C++11线程Qml WorkerScript 元件使用 QtQuickCompiler在项目管理文件.pro文件中添加一行CONFIG+=qtquickcompiler注意:qtquickcompiler的作用是第一次启动程序时,将qml文件编译成二进制的qmlc格式。在qt5.10版本默认打开。注意:Qt

2021-03-16 23:49:48 2385

原创 ansibles给你的linux自动化部署spacevim

Ansible 部署 SpaceVim注意可以先看github上教程,里面有不同系统间的配置github剧本下载ansible-galaxySpaceVim目前本剧本支持的系统:CentOS7CentOS8Ubuntu18.04Ubuntu19.04首先需要配置本机上的ansiblecd /etc/ansible/hosts# 本机[local]127.0.0.1# 你的服务器,或者别的linux电脑[linux]192.168.0.*** ansible_u

2021-03-16 23:46:42 121

原创 Qml 自己定义控件集及实验项目案例

Qml_CustomControl说明:这是一个Qml&QtQuick控件集,主要对地铁地图,地铁流媒体做了常用的子控件。注意: ps原图不可用于商业用途,背景图本人已购买版权。控件等级:1级控件在文件夹(CustomControl)中,就是案例中用到的轮子,有了轮子就能跑起来了。2级控件在文件夹(Test)中,它们是基于1级控件封装而成。实现原理:可参考《Qt Quick核心编程》,《Qt Creator快速入门》,《Qt及Qt Quick开发实战精解》,《Qt 5编程入门》.

2021-03-16 23:43:13 483

原创 使用crosstool-ng制作树莓派zero交叉编译工具

crosstool-ng工具crosstool-ng 是为了帮助你完成生成编译器工具链这样复杂任务而设计的,它提供了一个功能强大的前端与构建脚本,可以让你选择需要让工具链完成的功能,然后自动生成,而这个过程中你并不需要去确切的了解这些无数工具链是如何组织在一起的。crosstool-ng官网需要用到的组件:libstdc (标准C++库, 包括共享静态库)libtool和make (用于基础构建)GNU MP (用于高效精确数学计算)gperf (一个完美的哈希函数发生器)bison

2021-03-16 23:40:37 411

原创 树莓派3b+ qt5.12.4

硬件基于树莓派3b+ qt5.12.4. PC(ubuntu18 64位), 树莓派(Raspbian Stretcheith desktop)准备工作树莓派1.更新固件 sudo rpi-updatereboot2.配置sudo raspi-config#1. 打开SSH协议#2. 调整GPU显存#3. 打开硬件加速3. 取消sources.list 文件中的注释deb-src这行sudo leafpad /etc/apt/sources.list4. 下载需要的开发

2021-03-16 23:38:07 315

翻译 第6章:使用QSKIP跳过测试

第6章:使用QSKIP跳过测试在测试函数中使用QSKIP(description)如果从测试函数中调用QSKIP()宏,它将停止测试的执行,而不会向测试日志中添加失败。它可用于跳过肯定会失败的测试。QSKIP描述参数中的文本被附加到测试日志中,并解释为什么测试没有被执行。QSKIP可用于在实现尚未完成或在某个平台上不受支持时跳过测试。当存在已知的失败时,建议使用QEXPECT_FAIL,以便始终完全执行测试。测试函数中的QSKIP示例:if ( tst_Databases::getMySqlVer

2021-01-05 18:00:58 173

翻译 第5章:编写基准测试

第5章:编写基准测试如何编写基准测试。在最后一章,我们将演示如何使用Qt测试编写基准测试。基准测试为了创建基准测试,我们使用QBENCHMARK宏扩展了测试函数。基准测试函数通常由设置代码和QBENCHMARK宏组成,该宏包含要测量的代码。这个测试函数对QString::localeAwareCompare()进行基准测试。// benchmarking.cpp#include <QtWidgets>#include <qtest.h>class TestBench

2021-01-05 17:57:27 248

翻译 QtTest回放GUI事件

第四章:回放GUI事件如何回放GUI事件。在本章中,我们将展示如何模拟GUI事件,以及如何存储一系列GUI事件以及在小部件上重放它们。存储一系列事件并回放它们的方法与第2章中解释的方法非常相似。你所需要做的就是添加一个数据函数到你的测试类:// testgui.cpp#include <QtWidgets>#include <QtTest/QtTest>class TestGui : public QObject{ Q_OBJECTprivate slo

2020-12-29 00:28:49 424

翻译 QtTest模拟GUI事件

第三章:模拟GUI事件如何模拟GUI事件。Qt测试提供了一些测试图形用户界面的机制。Qt Test不模拟本机窗口系统事件,而是发送内部Qt事件。这意味着在运行测试的机器上没有副作用。在本章中,我们将看到如何编写一个简单的GUI测试。编写GUI测试这一次,假设您想要测试QLineEdit类的行为。和以前一样,你需要一个包含测试函数的类:// testgui.cpp#include <QtWidgets>#include <QtTest/QtTest>class T

2020-12-29 00:27:08 1037

翻译 QtTest数据驱动测试

第2章:数据驱动测试如何创建数据驱动测试。在本章中,我们将演示如何使用不同的测试数据多次执行测试。到目前为止,我们已经将想要测试的数据硬编码到测试函数中。如果我们添加更多的测试数据,函数可能像这样:QCOMPARE(QString("hello").toUpper(), QString("HELLO"));QCOMPARE(QString("Hello").toUpper(), QString("HELLO"));QCOMPARE(QString("HellO").toUpper(), QStr

2020-12-29 00:25:04 587

翻译 QtTest编写单元测试

第1章:编写单元测试如何编写单元测试。在第一章中,我们将看到如何为一个类编写一个简单的单元测试,以及如何执行它。编写一个测试假设您想要测试QString类的行为。首先,您需要一个包含测试函数的类。这个类必须继承QObject://testqstring.cpp#include <QtTest/QtTest>class TestQString : public QObject{ Q_OBJECTprivate slots: void toUpper();};

2020-12-29 00:21:32 1649

翻译 Qt Test简介

Qt TestQt Test提供了对Qt应用程序和库进行单元测试的类。所有公共方法都在QTest名称空间中。另外,QSignalSpy类为Qt的信号和槽提供了简单的自省,而QAbstractItemModelTester允许对项目模型进行非破坏性测试。注意:Qt测试模块没有二进制兼容性保证。这意味着使用Qt测试的应用程序只能使用它所开发的Qt版本。但是,源代码的兼容性是有保证的。文章和指南Qt Test Overview(概述)Qt测试是对基于Qt的应用程序和库进行单元测试的框架。Qt Test提

2020-11-17 22:22:01 5277

转载 加密与解密

加密:       发送方不想让别人看到信息的内容,将信息进行加密后再发送出去.加密之前的消息称为明文,加密后的消息称为密文.解密:       接收方收到发送方的加密消息,但作为接收方也是无法直接阅读密文的,于是接收方需要对密文进行解密之后再阅读.解密就是将密文恢复成明文的过程. 对称密码与公钥密码:      用于解决复杂问题的步骤,通常称为算法.从明文生成密文的步骤,也就...

2018-10-07 21:45:10 172

8通道继电器板V0.2

8通道继电器板V0.2,基于stm8八路继电器+光耦,标准modbus协议控制.

2018-05-29

VscodeC编译环境配置脚本生成器

VscodeC编译环境配置脚本生成器..............................................................................................

2018-05-27

OKI单片机手册407.408.409

2017-04-20

空空如也

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

TA关注的人

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