- 博客(213)
- 资源 (55)
- 收藏
- 关注
原创 qml c++混合编程注意事项
在Qml和C++类进行数据交互时,通用的办法都是注册C++到Qml中,但是很多时候C++的对象是在C++中进行创建,如果在Qml中创建了,数据之间的交互就会出现无法控制的问题。信号与槽、上下文等都是数据交互的方式,但是当嵌套多层时,内部的C++对象和内部的Qml内容交互无法直接连接。此时就需要通过一个代理的C++类作为数据和消息的连接通道。利用一个中间的代理类实现嵌套的消息和数据的交互,注册为engine的上下文。嵌套的交互,通知类、触发类的动作可以通过嵌套的信号与槽和C++绑定。
2025-03-12 21:59:08
154
原创 在QML中注册C++类型
在Qt6以后不在推荐使用qmlRegisterType注册C++类,但是如果在Cmake项目中不使用qt_add_qml_module,这种方法还可以使用。在继承自QObject的类中,需要生命Q_OBJECT,在该宏下面可以直接声明 QML_ELEMENT 宏,将该C++类注册到QML中;2. 基于 QML_NAMED_ELEMENT(name) 宏,给该C++类自定义类名注册到QML中,使用方法和QML_ELEMENT一样。C++类型,即无法在QML中创建、使用该C++类型声明属性。
2025-03-02 21:22:45
235
原创 QCustomplot源码编译cpp文件,错误file too big
mbig-obj编译信息,但是没说具体怎么去处理,对于cmake不太熟悉的人来说,简直就是一场信息灾难。具体的解决办法就是在 add_executable之后添加一个判断把大信息编译条件添加进去即可具体如下。使用cmake编译QCustomplot时,报错显示file too big,网上的信息都是添加。
2025-03-02 15:54:03
311
原创 使用cmake preset + vs2022构建Qt C++项目
由于vs2022的默认预设会自动生成,需要配置环境变量,windows版本的是msvc版的,如果需要切换mingw64需要在preset文件中添加对应的mingw64的环境。需要用到自定义的配置环境要将hidden字段置为false。cmake preset是cmake新版本中添加的内容,通过预设去构建cmake项目。Qt6官方推荐已经从qmake到cmake迁移了,以后cmake的支持会越来越多。
2025-03-02 15:49:21
343
原创 winddows查看端口号是否被占用
开始—->运行—->cmd,或者是 window+R 组合键,调出命令窗口。强制(/F参数)杀死 pid 为 9088 的所有进程包括子进程。回车执行该命令,最后一位数字就是 PID, 这里是 4468。查看被占用端口对应的 PID。查看指定 PID 的进程。
2024-12-05 17:12:31
295
原创 Qt+vs2022的中文乱码问题。
最近在项目中使用Qt中文时出现了乱码问题,但是以前的方法用着却没有作用了,关于vs + Qt中常量中文字符串、变量字符串中文乱码问题的解决方式。const char* info = “中文显示”;1.在项目中所有的头文件中添加。遂记录一下这次的解决方法。保证编码采用utf-8。
2024-07-30 17:20:33
451
原创 使用QGraphicsView三件套绘制图片,绘制鼠标事件
Qt通过鼠标绘制线条、矩形、多边形本质都是根据鼠标的坐标位移,使用QPainter的自带的函数进行绘制。
2024-07-29 14:46:07
364
原创 QML笔记八
在QQmlContext中设置一上下文(按照这样new QQmlContext(engine.rootContext())),上下文对象的是所有属性都可以在context中通过名称访问。context->setContextProperty(“stringModel”,&modelData) //////和下面代码的区别。//////和上面代码的区别。window销毁后,新创建的context必须显示销毁,可以将window作为context父对象,利用QT的对象内存结构自动销毁。
2024-05-15 23:05:36
1084
原创 C++ 使用matplot++ 处理数据生成svg图表
python的图表库很丰富,C++依赖于python的 matplotlib的库却有很多功能不足,显得很鸡肋,其他的一些库没有过多的研究,Matplot++编译需要依赖一堆第三方库,可以参考官网,但是github上也提供了编译好的静态库,使用Matplot++同时需要下载安装gnuplot,并将gnuplot的bin加入到环境变量。将include、lib加入到对应的位置,并配置好路径和库连接,这部分不多说了。这里主要说说不依赖于python的纯C++ 的图表库 Matplot++
2024-05-13 09:55:25
589
1
原创 QML基础语法七
ListModel包含三个数据项,有三个ListElement表示,每个ListElement有三个角色name、cost、attributes。QUick的数据模型主要包含在QtQml.Model中,还有个基于XML的QtQml.XmlListModel。使用Repeater可以将模型中的数据在定位器positioners中进行布局和显示。使用XML类型的导入 import QtQml.XmlListModel。使用表格类型的需要import Qt.labs.qmlmodels。例子:存储水果信息,
2024-05-09 20:41:20
264
原创 C++下使用Matplotlib-cpp的一些配置
这里为了打包方便,将python3.dll、python39.dll、vcruntime140.dll /path/Anaconda3/Library/plugins/platforms复制到exe所在的目录中。或者使用虚拟环境中的envs中的python环境对应的include 和 Lib/site-packages/numpy/core/include。C/C+±–》常规–》附加包含目录—》(这里使用了Anaconda3默认的安装的python3.9,没有使用虚拟环境)//设置python环境。
2024-05-09 15:09:47
1024
原创 QML基础语法六
主要就是red、lime、blue、black、white、yellow、cyan、magenta、green、pink、gray、gold等。color,一个ARGB格式颜色值,主要通过SVG颜色名称、十六进制、Qt.rgba()表示。Image用来显示图片,路径由source指定,格式为Qt支持的任何格式,PNG、JPEG、SVG等。rotation属性指定顺时针旋转的度数,默认为0,正数为顺时针旋转、负数为逆时针旋转。Item拥有一个scale、rotation属性,可以实现缩放、旋转。
2024-05-05 22:37:30
1073
原创 QML语法基础四
在MouseArea没接受事件时,才可以继续传递,即当一个事件在MouseArea中处理,需要在其他事件处理器中设置 MouseEvent.acepted=false,该事件才能继续传播。例如1000ms的定时器,经过了500ms,突然去改变repeat值,则之前的500ms会重置为0,再过1000ms后才能触发。实现复杂的拖拽事件用到DragEvent,通过x、y获取拖动的位置,使用keys识别数据类型和源的键列表。键盘事件是在键盘上按下一个键时就触发,控件的focus设置为true,该控件便有焦点。
2024-04-27 12:10:43
1131
原创 QML语法基础三
定位器添加删除一个子Item时,可以使用Transition,添加动画效果 上述四个定位器都有 add move。如果可以通过x y width height 解决,尽量使用,因为布局管理器、定位器锚会占用大量内存和实例化时间。QML提供了多种布局管理器、定位器、基于锚anchors的布局、x,y,width,height等调整用户界面。将子项目排列在网格中,向网格中添加项目会按照从左到右,从上到下进行排列。可以从前向后,像流一样布局子项目,超出宽度自动话换行。populate属性。
2024-04-25 22:37:51
689
原创 QML语法计基础二
top: 30} 整数验证器 限制输入为10-30的整数。TextInput.PasswordEchoOnEdit 使用密码验码字符,在输入时显示真实字符。Text.StyledText 支持一些基本的html文本样式标签,要求标签必须正确配套。mapFromItem(item,x,y)将子容器坐标(x,y)映射到其父容器的坐标上。父容器的不透明度会影响到子容器,如果要设置不透明度,只需要更改子容器的不透明度即可。单词间距 正值加大间距 负值减小间距。
2024-04-23 23:04:09
679
原创 QML语法基础一
2.1声明:C++中通过Q_PROPERTY宏:QML中通过 property propertyType propertyName—>例子:property color nextColor。声明了一个color类型的nextColor属性,隐式为该属性创建了一个onNextColorChanged,如果nextColor值改变就会触发,即称之为onSignalName:(_,y)=>console.log(”: "+y) //只访问第二个参数,不访问第一个。
2024-04-18 22:44:55
1224
原创 Qt的Model-Deletage委托代理机制
处理编辑器的事件: 通过实现eventFilter()方法来处理编辑器的事件,如键盘事件;渲染特定类型的数据: 通过定制单元格的外观来渲染特定类型的数据,例如颜色,字体等;支持不同类型的编辑器: 支持不同类型的编辑器,例如文本编辑器,下拉列表编辑器等;编辑特定类型的数据: 通过创建编辑器来编辑特定类型的数据,例如日期,数值等。更新编辑器的尺寸: 通过实现sizeHint()方法来更新编辑器的尺寸;属性编辑器: 使用委托可以创建自定义属性编辑器来编辑特定类型的属性。
2023-11-16 14:35:50
594
原创 BeegFS编译以及简单的搭建
BeeGFS编译编译整体模块编译单个模块简单搭建环境编译整体模块需要将gcc版本升级到高版本,支持C++14yum install libuuid-devel libibverbs-devel librdmacm-devel libattr-devel redhat-rpm-config \ rpm-build xfsprogs-devel zlib-devel ant gcc-c++ gcc \ redhat-lsb-core java-devel unzip libcurl-devel e
2022-04-26 14:49:53
1628
转载 GDB调试-从入门实践到原理
转载自:CPP开发者背景作为C/C++开发人员,保证程序正常运行是最基本也是最主要的目的。而为了保证程序正常运行,调试则是最基本的手段,熟悉这些调试方式,可以方便我们更快的定位程序问题所在,提高开发效率。在开发过程,如果程序的运行结果不符合预期,第一时间就是打开GDB进行调试,在对应的地方设置断点,然后分析原因;当线上服务出了问题,第一时间查看进程在不在,如果不在的话,是否生成了coredump文件,如果有,则使用gdb调试coredump文件,否则通过dmesg来分析内核日志来查找原因。概念
2022-04-22 14:55:06
5688
原创 C++11新特性学习--容器篇
class STLClass{public: //关联容器 排序的 map set static void testMultiSet() //可以有重复值 { multiset<string> city{"xian","beijing","tianjin","henan","weinan"}; for(const auto &elem : city) { cout<<elem&l
2022-03-08 15:38:12
907
原创 C++11新特性学习--第一篇线程同步死锁及异步线程问题
头文件:#include < thread >互斥锁 数据竞争与资源互斥std::mutex mtx;void shared_printf(string msg,int id){ //mtx.lock(); //当互斥对象内部资源出现异常时,此处将造成死锁 //cout<<"__FUNCTION__ msg:"<<msg<<" id:"<<id<<endl; //mtx.unlock();
2022-03-08 15:28:53
999
原创 错误:can‘t create 事务 lock on /var/lib/rpm/.rpm.lock (只读文件系统)
mount -o remount rw /usr; mount -o remount rw /var; mount -o remount rw /
2021-12-13 14:21:11
2788
2
转载 开发过程中错误码总结
〖0〗-操作成功完成。〖1〗-功能错误。〖2〗-系统找不到指定的文件。〖3〗-系统找不到指定的路径。〖4〗-系统无法打开文件。〖5〗-拒绝访问。〖6〗-句柄无效。〖7〗-存储控制块被损坏。〖8〗-存储空间不足,无法处理此命令。〖9〗-存储控制块地址无效。〖10〗-环境错误。〖11〗-试图加载格式错误的程序。〖12〗-访问码无效。〖13〗-数据无效。〖14〗-存储器不足,无法完成此操作。〖15〗-系统找不到指定的驱动器。〖16〗-无法删除目录。〖17〗-系统无法将文件移到不同
2021-12-10 17:16:27
1667
2
原创 记录一些windows开发的工具函数
windows时间转Linux时间static void FTimeToSystemTime(FILETIME file_time, time_t* t){ ULARGE_INTEGER ui; ui.LowPart = file_time.dwLowDateTime; ui.HighPart = file_time.dwHighDateTime; *t = ((LONGLONG)(ui.QuadPart - 116444736000000000) / 10000000); }sta.
2021-12-06 16:43:50
274
原创 Git常用的命令
#查看远程分支git branch -r#查看本地分支git branch -a删除目标分支git branch -D master切换分支git checkout 本地分支名重新拉取master分支git checkout master拉取远程分支到创建的本地分支git checkout -b 本地分支 origin/远程分支拉取远程分支(先创建本地分支,在切换到当前分支)git pull origin 远程分支使用该方式会在本地新建分支x,但是不会自动切换到该本地分支x,需.
2021-12-03 09:28:01
177
原创 CreateTimerQueueTimer精度问题 本地时间戳
在windows平台上使用 CreateTimerQueueTimer定时器时,需要将精度设置到1-2 ms的时间,但是CreateTimerQueueTimer的执行时间片在15ms左右,后来无意间找到一篇文章原来是微软故意这么干的,他觉得设置精度到毫秒级别,太耗费资源了,如果是移动设备,频繁唤醒切换线程,电池消耗得很快。于是微软宁肯抛弃强兼容性传统,也坚决让这函数失效。悲催啊!性能问题,你这样搞就很扯淡呀微软!!!!!!...
2021-11-29 16:24:28
1076
原创 Qt事件与自定义事件处理
QObject 类是所有 Qt 对象的基类,是 Qt 对象模型的核心,所有 Qt 部件都继承自 QObject。QObject 及其派生类的单形参构造函数应声明为 explicit,以避免发生隐式类型转换QObject 类既没有复制构造函数也没有赋值操作符函数(实际上它们被声明为私有的),因此无法通过值传递的方式向函数传递一个 QObject 对象每一个 QObject 对象只能有一个父 QObject 对象,但可以有任意数量的子 QObject 对象A ma; B mb; C mc;ma..
2021-09-24 10:33:54
753
原创 Linux 软链接和硬链接
突然忘记怎么区分软连接和硬链接了,做一次备份吧!硬链接创建:ln 原始文件名 产生的硬链接名称ln libfuse libfuselnk 这里libfuse就是源文件,libfuselnk就是生成的硬链接软连接创建:ln -s 原始文件名 产生的硬链接名称ln -s libfuse libfuselnk再Linux中怎么区分软连接和硬链接呢?如下图硬链接的节点符号( inode 号)和源文件是相同的,相反软连接是不同的...
2021-09-17 14:54:06
243
原创 Qt反射机制获取属性信息
一、反射系统1、QMetaProperty 类①、作用:用于描述对象的属性,可使用该类的成员函数获取对象属性的信息。②、该类拥有一系列的返回 bool 值的成员函数,用于判断属性的行为(见下表)isReadable() 可读返回trueisEnumType() 若属性的类型是枚举,则返回 trueisWritable() 可写返回 true isFinal() 声明属性时 FINAL 是否为 trueisValid() 属性有效则返回 true。 isFlagType()
2021-09-16 19:45:39
2482
原创 QVariant类和属性系统
一、QVariant 类使用QObject::property 函数可读取属性的值,使用 QObject::setProperty 函数可以设置属性的值,但是属性有很多种类型,怎样使用 property 函数返回的属性值具有正确的类型呢?为解决这个问题,使用了一个QVariant 来描述类型.QVariant 类用于封装数据成员的类型及取值等信息,该类类似于 C++共用体 union,一个QVariant 对象,一次只能保存一个单一类型的值。该类封装了 Qt 中常用的类型,对于QVariant 不
2021-09-16 15:54:18
1100
原创 Qt的属性系统
一、属性系统1.属性基础属性和类成员数据相似,属性可以使用元对象系统,和类数据成员存储方式不同。主要差别在于存取方式不相同,比如属性值通常使用读取函数(即函数名通常以 get 开始的函数)和设置函数(即函数名通常以 set 开始的函数)来存取其值,除此种方法外,Qt 还有其他方式存取属性值。注:一个属性都有与之相关联的数据成员,而采用的命名规则通常是加上 m_前缀,比如属性名为 a,则与之相关联的数据成员名称通常为 m_a。2.属性值进行存取使用 QObject::property 和 QOb
2021-09-14 17:30:56
881
原创 Qemu-Spice流程初始化
Qemu-Spice初始化Qemu模块优先初始化相关全局设备对象PCI、ISA、IDE、I2C等;通过VDI接口将CoreInterface实例传入到libSpice中,通过libSpice中调用相关接口。设备对象初始化完毕,创建Server Socket,等待Socket连接,建立Main_Channel通道Qemu-Spice IO流程通过Qemu的add_interface接口将watch_add函数传入spice中,设置Socket的监听函数以及读写函数,通过WATCH_EVENT_READ
2021-09-14 17:09:33
686
DialogTestCEF.rar
2020-05-14
MyLive555.zip
2019-12-06
OpenCV3书本配套资源.rar
2019-07-10
openal-soft-master.rar
2018-01-15
openal-soft-android-master
2017-12-06
ts流中pat表pmt表解析
2017-09-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人