自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ QT使用ECharts显示k线图、折线图

这里就完成了C++ qt中去调用JavaScript中方法去动态设置echarts数据。项目ui布局,创建3个按钮,右侧是QWebEngineView控件进行展示html。如下代码QWebEngineView界面加载完成在调用JS的方法去动态设置数据。将line-simple.html和echarts.min.js放到运行目录下。C++ qt提供如下方法去调用javascript代码去动态设置数据。该案例是静态数据,下一节介绍QT动态设置Echarts数据进行展示。实际下载3个html和js文件。

2026-02-10 14:42:08 239

原创 使用QCefView库进行二次开发

如上CefViewWidget.cpp和CefViewWidget.h可以从QCefView\example\QCefViewTest目录下拷贝,并修改编译报错。基于vs创建一个项目,并将QCefView编译生产的lib和bin、头文件的目录拷贝到当前项目目录下。依赖VS2022 CMake QCefView编译生产的lib和bin、头文件。详情见我的文章: VS2022 CMake QCefView编译。配置库文件、头文件目录。

2026-02-10 12:06:40 320

原创 VS2022 CMake QCefView编译

cmake最低版本为3.19QCefView代码主仓库CefViewCore子模块仓库CefViewCore子模块仓库 https://github.com/CefView/CefViewCore依赖于CefViewCore子模块,实际需要把CefViewCore子模块解压后替换QCefView仓库中CefViewCore目录。

2026-02-09 12:51:05 840

原创 QT控件之c

QWebEngineView类在QWebEngineView模块中,需要在项目.pro文件中添加QWebEngineView模块名QWebEngineView使用步骤。

2026-02-09 10:27:10 98

原创 VS2022编译CEF和使用

在文件夹中新建2个项目,build_x64和cef102_x64_sdk,其中build_x64存放工程编译中间文件和配置文件,cef102_x64_sdk存放编译成功后的安装目录用来放头文件和库文件。解压cef_binary_102.0.10+gf249b2e+chromium-102.0.5005.115_windows64.tar.bz2。库文件为libcef_dll_wrapper.lib,头文件目录为cef102_x64\include,选择cefsimple,点击运行,运行前修改代码。

2026-02-08 22:56:54 419

原创 QT常用控件:QListWidget

如下demo是展示基本添加QListWidgetItem用法,支持基本数据类型和自定义Item,如下自定义item是CUserItem结构需要通过setItemWidget方法设置。

2026-02-05 23:17:17 291

原创 QT内存管理

如上dialog设置WA_DeleteOnClose后当点击close关闭时该对象会自动被释放。这里重点说下QWidget设置Qt::WA_DeleteONClose标志位。

2026-02-04 23:38:31 254

原创 QT开发环境安装

安装步骤主要为如上三步。

2026-02-04 22:18:21 335

原创 Qt Creator常用设置

Qt Creator 作为一款强大的跨平台 C++ IDE,提供了丰富的配置选项来满足不同开发者的需求。Qt Creator 使用“套件(Kit)”的概念来定义开发环境,它包含了编译器、调试器、Qt 版本以及目标平台等信息。确保配置正确的套件至关重要。清晰舒适的代码编辑界面是高效编码的基础。Qt Creator 允许你自定义编辑器的外观。默认情况下,Qt Creator 会将编译生成的程序(如。有时你可能希望集中管理所有生成的可执行文件。)放在项目目录下的特定子目录(如。

2026-02-04 12:53:13 544

原创 QT信号槽机制原理

那么我们只需要写一个槽函数为,on_btn2_clicked(),格式为on_obejctname_信号名称即可,QT会自动进行信号与槽绑定,不需要显示调用connect进行绑定,是qt中自动绑定连接方式。原理:QT程序在标准编译器编译前,会先通过MOC分析C++源文件,如果在头文件中包含了Q_OBJECT宏定义,则会生成另外一个C++源文件,该文件的名称格式moc_类名.cpp,不推荐这种方法,如果SIGNAL写错了、或者信号名称、槽函数名称写错了,编译器检查不出来,导致程序无响应。

2026-02-03 22:39:47 601

原创 QT布局介绍

QT常用布局如上图所示。

2026-02-01 23:50:42 244

原创 QT控件之QTabWidget使用

/点击close关闭tab页。如上insertTab和addTab区别在于insertTab可以指定。QTabWidget常用api、信号槽。//设置tab是否含有x进行关闭。//设置tab形状tixing。//设置tab是否可移动。

2026-01-31 23:25:17 304

原创 QT qss样式表案例

test.qss样式表文件内容如下:如下样式表中通过 ID选择器指定控件如下是QPushButton控件的obejctname分别为btn1、btn2和btn3代码中读取test.qss文件并全局设置代码中设置QPushButton的objectname如下:属性选择器如果想要为某个按钮设置属性,如下为button设置button_type属性值为normal,button2设置button_type属性值为warning.同时test.qss样式针对不同属性设置不同样式表格式另外:重要提

2026-01-26 17:03:04 90

原创 QT中窗口位置、相对位置、绝对位置

下面以一个简单demo说明如上坐标,在一个widget里重写了mousePressEvent方法,在这个方法里获取绝对坐标和相对坐标。

2026-01-25 22:03:50 57

原创 QT QSS语法

2026-01-25 18:34:28 51

原创 QPushButton QSS(一):按钮常用qss

本文实现如下按钮的三种qss样式。

2026-01-23 22:44:08 66

原创 QT中QTableView+Model+Delegate实现一个demo

1、QTableView展示不出来,model+tableview为局部变量当构造函数执行结束时,这两个对象会被自动销毁。即使调用了,窗口会短暂显示,但对象销毁后视图也随之消失,因此实际看不到表格解决方案​:将tableView和model​提升为类的成员变量,确保其生命周期与窗口一致:2、 ​视图未嵌入父窗口布局问题分析即使解决了生命周期问题,若tableView未添加到窗口布局中,它可能因尺寸为0或位置错误而不可见。你的代码中tableView是独立创建的,未关联到ui生成的界面布局中。

2025-07-30 17:38:45 317

原创 QT元对象系统-(1)静态属性和动态属性

QT元对象系统中动态属性是Qt框架提供的一种运行时属性机制,与通过Q_PROPERTY宏声明的静态属性不同,动态属性具有以下特点‌:Qt的静态属性和动态属性_qt 动态属性系统-CSDN博客

2025-07-24 14:17:03 331

原创 Windows下odbc配置连接SQL Server

打开SQL Server 2022配置管理器查看SQL Server运行状态,可以设置 启动或停止服务。

2025-07-17 11:51:27 1153

原创 QT中翻译文件生成步骤

进入目录D:\Code\ds-cmifinaldetect\plugins\plg_main2。主要使用工具:lupdate、linguist、lrelease都在如上路径的bin目录下。会在指定目录下生成plg_main2_zh_CN.ts文件。将 .ts 编译为 .qm 二进制文件。2、提取翻译字符串 (lupdate)3、编辑翻译文件 (linguist)4、编译翻译文件 (lrelease)用来生成/更新 .ts 翻译文件。图形界面进行添加对应翻译。1、配置工具环境变量。

2025-06-30 18:08:58 420

原创 QT打包应用

若运行报错缺失DLL,需要把MinGw下面的lib拷贝到上面的exe目录(如下lib是Mingw编译器特有的)2、创建脚本运行windeployqt.exe完成打包。下面详细介绍下windows平台qt应用程序打包流程。1、先编译项目的release版本生成exe文件。本次工程使用qt mingGw 64-bit。rundeploy.bat脚本。runexe.bat脚本。

2025-06-14 22:10:05 475

原创 qt中自定义控件编译成动态库

选择编译器,这里选择Qt 5.14.2 MinGW 64-bit这里要编译的自定义控件类名为MyBattery到这里如上已经生成了工程目录,不过这里的MyBattery实现都为空接下来需要把具体实现的mybattery.cpp和mybattery.hmybattery.h文本进行如下修改将cpp和h文件拷贝到该工程进行覆盖编译构建,生成的dll和a文件。

2025-06-14 16:41:50 457

原创 ffmpeg命令整理

iw和ih是输入的宽和高,ow和oh是输出的宽和高。iw/3: 裁剪后的ow是iw的1/3。0:0指的是裁剪输出后的x和y起始坐标。(3)裁剪偏移左上角100像素。x和y是要裁剪的起始坐标值。(1)裁剪左侧1/3。(2)裁剪右下角区域。

2025-04-02 10:50:43 474

原创 ffmpeg中格式转换需要注意点总结

某些封装格式(例如MP4/FLV/MKV等)的H.264码流的SPS和PPS信息存储在AVCodeccontext结构体的extradata中。分离某些封装格式(例如MP4/FLV/MKV等)中的H.264的时候,需要首先写入SPS和PPS,否则会导致分离出来的数据没有SPS、PPS而无法播。需要使用ffmpeg中名称为“h264 mp4toannexb”的bitstream filter处理。

2025-04-01 17:48:59 1303

原创 ffmpeg滤镜使用

背景:现在有2个mp4文件,一个文件分辨率是854x480,另一个是320x240,想要通过ffmpeg实现把多路视频流进行拼接,实现不同效果。

2025-03-31 18:00:52 743

原创 Ubuntu下使用protoBuf

protobuf是用来干嘛的?protobuf是一种用于 对结构数据进行序列化的工具,从而实现 数据存储和交换。(主要用于网络通信中 收发两端进行消息交互。所谓的“结构数据”是指类似于struct结构体的数据,可用于表示一个网络消息。当结构体中存在函数指针类型时,直接对其存储或传输相当于是“浅拷贝”,而对其序列化后则是“深拷贝”。**序列化:**将结构数据或者对象转换成能够用于存储和传输的格式。**反序列化:**在其他的计算环境中,将序列化后的数据还原为数据结构和对象。

2023-11-24 17:47:54 2886

原创 C++中noncopyable不可拷贝类的使用

​ class noncopyable的基本思想是把构造函数和析构函数设置protected权限,这样子类可以调用,但是外面的类不能调用,那么当子类需要定义构造函数的时候不至于通不过编译。但是最关键的是****noncopyable把复制构造函数和复制赋值函数做成了private****,这就意味着除非子类定义自己的copy构造和赋值函数,否则在子类没有定义的情况下,外面的调用者是不能够通过赋值和copy构造等手段来产生一个新的子类对象的。指向了同一块的内存。被销毁,各自调用析构函数,由于他们的。

2023-11-17 17:17:53 745

原创 Google单元测试sample分析(四)

通过Water类来重写new和delete方法来实现记录内存分配/释放的情况,另外通过LeakChecker 继承自EmptyTestEventListener 并实现OnTestStart(测试用例开始前运行)和OnTestEnd方法(测试用例结束后运行)可以通过GoogleTest提供的事件侦听器EmptyTestEventListener 来实现,下面通过官方提供的sample例子,路径在samples文件夹下的sample10_unittest.cpp。

2023-10-30 13:59:42 596

原创 Google单元测试sample分析(三)

源码目录在googletest/googletest/目录下的prime_tables.h和sample6_unittest.cc。如下是Google Test框架中的Typed Test(带类型的测试)功能,在testing::Types命名空间中。以上代码中PrimeTableTest类继承自testing::Test,类内部定义个PrimeTable类型指针。如下Implementations是一个模板参数,它包含了两种实现的类型。本文介绍关于模版类该如何设置单元测试。

2023-10-30 11:33:09 420

原创 Google单元测试sample分析(二)

这里的QuickTest继承自testing::Test,并重写SetUp和TearDown方法,SetUp方法在每个TEST_F开始运行一次,退出执行TearDown方法一次。QueueTest类继承自QuickTest,并重写SetUp方法,在SetUp方法里调用QuickTest的父类方法,然后对Queue队列做初始化,q0_.Dequeue队列本来大小为0,出列的数据为nullptr。这个案例里记录整个TEST_F测试夹具的测试用例的运行时间。有关TEST_F测试夹具的使用案例。

2023-10-27 11:30:59 436

原创 Google单元测试sample分析(一)

/这里的STREQ是判断字符串内容,s为空类比较要使用nullptr。代码路径在googletest/googletest/samples/sample1.本文开始从googletest提供的sample案例分析如何使用单元测试,下面介绍sample2_unittest.cc文件。EXPECT_FALSE 是否为False。EXPECT_TRUE 是否为True。EXPECT_EQ 判断是否相等。本文件主要介绍EXPECT。

2023-10-27 11:01:01 530

原创 GoogleTest使用

然后删除测试夹具。多个TEST_F()拥有相互独立的个体,数据不会相互影响。案例2:继承自testing::Environment类。

2023-10-26 16:54:08 853

原创 linux系统安装Googletest单元测试框架

v1.10.x之后的版本有个坑需要看一下,cmake的时候会有问题,会在CMakelist.txt的127行附近报一个错,原因是下面语句中的GOOGLETEST_VERSION变量没有定义,需要手动加一下。编译完成会在googletest/build/lib目录下生成4个静态库文件,libgmock.a、libgmock_main.a、libgtest.a、libgtest_main.a。这样,如果你之前的gcc和google版本是匹配的,那么make应该就没有语法问题了,否则就是版本不匹配问题。

2023-10-24 17:41:35 1168

原创 vector Autosar someip和vsomeip协议调试总结

虽然someip协议已经基本成熟,但有多个实现版本,现在使用较多的主要有,vector autosar配置的someip版本,以及网络开源的vsomeip版本;而someipd实现的someip sd协议是借助于udp的广播来发布或收集网络中的其他someip应用的相关信息的;这个首先要借助网络工具来抓包进行确认,是否可以在网络上抓取到相应的udp数据包,来检查是不是由于网络设置的原因造成的;由于某些特殊的原因,将autosar someip的主版本号设置为255可以与vsomeip 的0版本号相互发现;

2023-10-13 16:58:40 1480 1

原创 python多线程

python多线程的4种实现方式。

2023-04-19 17:00:17 700

原创 chatGPT生成的一个简单QNX资源管理器的实现

这个demo创建了一个名为"my_resource"的资源管理器,并提供了两个请求:“lock"和"unlock”。当客户端发送"lock"请求时,它会锁定资源;当客户端发送"unlock"请求时,它会解锁资源。每个请求都会回复"OK"。不得不感叹于chatGPT的强大,下面是chatGPT生成一个QNX资源管理器的demo。

2023-04-14 16:29:25 402

原创 QNX系统基础

资源管理,就是posix提供的接口来管理资源。比如open文件、read/write文件resmgr本身是一个进程,在文件系统中注册了名字,其他进程就可以通过这个名字和该进程通信。比如串口进程,注册了一个/dev/ser1名字,其他进程就可以通过/dev/ser1和串口驱动通讯。我们看到的每一个设备节点都是一个resource manager\大家可以看到资源管理器在QNX上的重要,几乎所有的服务都是通过资源管理器来实现的。而且用资源管理器的概念,可以很好地模块化系统。

2023-04-14 14:09:47 4241

原创 互斥锁、自旋锁、原子操作的使用场景

假设线程A想要通过pthread_mutex_lock操作去得到一个临界区的锁,而此时这个锁正被线程B所持有,那么线程A就会被阻塞,Core0会在此时进行上下文切换(Context Switch)将线程A置于等待队列中,此时Core0就可以运行其它的任务而不必进行忙等待。Spin lock(自旋锁)属于busy-waiting类型的锁,如果线程A是使用pthread_spin_lock操作去请求锁,那么线程A就会一直在Core0上进行忙等待并不停的进行锁请求,直到得到这个锁为止。3 、临界区竞争非常激烈。

2023-04-10 11:09:10 833

原创 C和C++程序互相调用方案

项目实际开发需求需要在C++程序中调用c语言实现的库,那么需要怎么实现呢?原理:C++函数为了支持函数重载,g++编译器会对函数名进行修饰,而C函数编译的符号表中只是函数名。同样的代码用C编译器(gcc)和C++编译器(g++)编译产生的函数名不同,导致C++连接找不到C语言的函数,所以C++程序中直接C函数是不能直接实现的,需要通过某种处理下面通过一个例子简单说明C++和C编译原理的不同之处上面源码用gcc编译。

2023-03-27 17:28:26 779

原创 python调用C&C++

Python调用C语言程序比较简单,将C语言程序编译好,再使用python中的ctypes模块调用即可。C语言源码called_c.c编译生成libpycall.so动态库文件,之后就可以在Python中调用foo函数运行既可以完成python中调用C程序。

2023-03-27 17:28:11 920

空空如也

空空如也

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

TA关注的人

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