- 博客(236)
- 资源 (55)
- 收藏
- 关注
原创 Qt的委托代理机制
处理编辑器的事件: 通过实现eventFilter()方法来处理编辑器的事件,如键盘事件;渲染特定类型的数据: 通过定制单元格的外观来渲染特定类型的数据,例如颜色,字体等;支持不同类型的编辑器: 支持不同类型的编辑器,例如文本编辑器,下拉列表编辑器等;编辑特定类型的数据: 通过创建编辑器来编辑特定类型的数据,例如日期,数值等。更新编辑器的尺寸: 通过实现sizeHint()方法来更新编辑器的尺寸;属性编辑器: 使用委托可以创建自定义属性编辑器来编辑特定类型的属性。
2023-11-16 14:35:50 277
原创 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 1384
转载 GDB调试-从入门实践到原理
转载自:CPP开发者背景作为C/C++开发人员,保证程序正常运行是最基本也是最主要的目的。而为了保证程序正常运行,调试则是最基本的手段,熟悉这些调试方式,可以方便我们更快的定位程序问题所在,提高开发效率。在开发过程,如果程序的运行结果不符合预期,第一时间就是打开GDB进行调试,在对应的地方设置断点,然后分析原因;当线上服务出了问题,第一时间查看进程在不在,如果不在的话,是否生成了coredump文件,如果有,则使用gdb调试coredump文件,否则通过dmesg来分析内核日志来查找原因。概念
2022-04-22 14:55:06 3263
原创 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 836
原创 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 866
原创 错误: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 2458
转载 开发过程中错误码总结
〖0〗-操作成功完成。〖1〗-功能错误。〖2〗-系统找不到指定的文件。〖3〗-系统找不到指定的路径。〖4〗-系统无法打开文件。〖5〗-拒绝访问。〖6〗-句柄无效。〖7〗-存储控制块被损坏。〖8〗-存储空间不足,无法处理此命令。〖9〗-存储控制块地址无效。〖10〗-环境错误。〖11〗-试图加载格式错误的程序。〖12〗-访问码无效。〖13〗-数据无效。〖14〗-存储器不足,无法完成此操作。〖15〗-系统找不到指定的驱动器。〖16〗-无法删除目录。〖17〗-系统无法将文件移到不同
2021-12-10 17:16:27 1386 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 216
原创 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 111
原创 CreateTimerQueueTimer精度问题 本地时间戳
在windows平台上使用 CreateTimerQueueTimer定时器时,需要将精度设置到1-2 ms的时间,但是CreateTimerQueueTimer的执行时间片在15ms左右,后来无意间找到一篇文章原来是微软故意这么干的,他觉得设置精度到毫秒级别,太耗费资源了,如果是移动设备,频繁唤醒切换线程,电池消耗得很快。于是微软宁肯抛弃强兼容性传统,也坚决让这函数失效。悲催啊!性能问题,你这样搞就很扯淡呀微软!!!!!!...
2021-11-29 16:24:28 851
原创 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 640
原创 Linux 软链接和硬链接
突然忘记怎么区分软连接和硬链接了,做一次备份吧!硬链接创建:ln 原始文件名 产生的硬链接名称ln libfuse libfuselnk 这里libfuse就是源文件,libfuselnk就是生成的硬链接软连接创建:ln -s 原始文件名 产生的硬链接名称ln -s libfuse libfuselnk再Linux中怎么区分软连接和硬链接呢?如下图硬链接的节点符号( inode 号)和源文件是相同的,相反软连接是不同的...
2021-09-17 14:54:06 171
原创 Qt反射机制获取属性信息
一、反射系统1、QMetaProperty 类①、作用:用于描述对象的属性,可使用该类的成员函数获取对象属性的信息。②、该类拥有一系列的返回 bool 值的成员函数,用于判断属性的行为(见下表)isReadable() 可读返回trueisEnumType() 若属性的类型是枚举,则返回 trueisWritable() 可写返回 true isFinal() 声明属性时 FINAL 是否为 trueisValid() 属性有效则返回 true。 isFlagType()
2021-09-16 19:45:39 1866
原创 QVariant类和属性系统
一、QVariant 类使用QObject::property 函数可读取属性的值,使用 QObject::setProperty 函数可以设置属性的值,但是属性有很多种类型,怎样使用 property 函数返回的属性值具有正确的类型呢?为解决这个问题,使用了一个QVariant 来描述类型.QVariant 类用于封装数据成员的类型及取值等信息,该类类似于 C++共用体 union,一个QVariant 对象,一次只能保存一个单一类型的值。该类封装了 Qt 中常用的类型,对于QVariant 不
2021-09-16 15:54:18 851
原创 Qt的属性系统
一、属性系统1.属性基础属性和类成员数据相似,属性可以使用元对象系统,和类数据成员存储方式不同。主要差别在于存取方式不相同,比如属性值通常使用读取函数(即函数名通常以 get 开始的函数)和设置函数(即函数名通常以 set 开始的函数)来存取其值,除此种方法外,Qt 还有其他方式存取属性值。注:一个属性都有与之相关联的数据成员,而采用的命名规则通常是加上 m_前缀,比如属性名为 a,则与之相关联的数据成员名称通常为 m_a。2.属性值进行存取使用 QObject::property 和 QOb
2021-09-14 17:30:56 731
原创 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 549
原创 Qemu-spice云桌面创建
Spice是一个开放的远程计算解决方案,提供客户端访问远程显示和设备(如键盘、鼠标、音频)。主要的用例是获得对虚拟机的远程访问。官网:SpiceQemu-Spice框架Spice的基本构建模块:Spice Server: Spice Server是在libspice中实现的,libspice是一个VDI可插拔库。目前,这个库的主要用户是QEMU。 QEMU使用Spice -server通过Spice协议提供对虚拟机的远程访问。虚拟设备接口(Virtual Device Inte
2021-09-14 16:57:25 3176
原创 Qt元对象反射机制
一、元对象概念元对象功能:信号与槽、运行时类型信息、动态属性二、元对象实现条件1.该类必须继承自QObject类2.类的私有区域必须声明Q_OBJECT宏,该宏用于启动元对象特性,使用动态特性,信号和槽3.元对象编译器(moc)为每个QObject子类,提供了实现元对象特性必须的代码三、元对象系统运行原则1.moc编译器首先会去掉扩展语法当Qt程序启动了元对象属性时。2.moc编译器是一个类似于qmake的工具,用于读取分析C++文件,若发现类包含Q_OBJECT宏的声明,会生成另
2021-09-10 16:52:28 1071
原创 Windows下主线程等待子线程任务完成防止阻塞的方式
@线程同步方式用户模式:WaitForMultipleObject内核模式:MsgWaitForMultipleObjects用户模式的线程同步机制效率高,如果需要考虑线程同步问题,应该首先考虑用户模式的线程同步方法。但是,用户模式的线程同步有限制,对于多个进程之间的线程同步,用户模式的线程同步方法无能为力。这时,只能考虑使用内核模式。一般情况下,主线程创建子线程后(优先使用_beginthreadex),使用WaitForSingleObject(hThread, INFINITE);等待子
2021-08-23 14:35:20 983
原创 二级指针使用注意事项
二维数组与二级指针的使用给,数组只能处理特定数量的数据,局限性较大。二级指针可以看作是一个数组,申请内存方式如下: char** disk = (char**)malloc(sizeof(char*)*5); for (size_t i = 0; i < 5; i++) { disk[i] = (char*)malloc(sizeof(char) * 260); memset(disk[i],0, 260); } int test(char** _str, int k) {
2021-08-18 15:36:18 111
原创 Mingw64编译跨平台程序时,_stat函数对于Windows中文路径不支持
通过Mingw64交叉编译Windows程序时,会经常为了适配使用到一些C库的函数,但是Windows平台相较于Linux平台对于C库的函数支持性有一定的差距!在做文件系统时,当获取文件、目录的详细信息时,会使用的stat函数,该函数再Linux环境下没有什么使用的问题,但是再Window环境下,对于 char*字符串中带的中文路径支持度不够,适配跨平台时,需要使用_wstat64宽字节函数对应!解决该问题! char u8str[] = u8"D://你好你好"; WCHAR uni_buf[MAX
2021-08-17 14:32:11 821
原创 Windows平台文件操作
Windows平台文件操作函数创建打开文件CreateFileHANDLE CreateFile( LPCTSTR,lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, L
2021-07-07 15:53:21 381
原创 Linux下Mingw32中编译安装Boost、libprotobuf-c
创建交叉编译环境时在Linux下安装Mingw32,使用Mingw32编译windows的应用程序,经常会使用到一些第三方的开源库,此时需要将开源库安装进mingw32中,以便在交叉编译时可以找到对应的头文件和库文件;在使用Boost库时,遇到的编译问题,由于网上大部分都是在windows上的mingw32中编译安装,跟Linux还是又许多差距的;在使用过程中也遇到了很多问题,在Stackoverflow上终于找到了对应的解决办法,现将记录如下:链接: 解决办法1. echo "using gcc
2021-06-18 14:24:34 484
原创 Linux下制作安装包
1.免安装打包方式 将可执行文件的关联动态库拷贝到特定文件夹下(例如3DCamera)即可; 具体方式,ldd 可执行文件;查看所关联的库; 也可以使用脚本:创建一个copy.sh文件,输入以下内容: dep=$( ldd $1 | awk '{if (match($3,"so")){print $3}}' ) cp -L -n $dep $2 执行:copy.sh 可执行文件 目标文件夹(3DCamera) 将可执行文件...
2021-05-08 16:24:59 1315
原创 SecureCRT或者XShell使用自带的sftp实现windowslinux上传下载
切换到自己的Linux系统的目录:cd ~点击file->Connect SFTP Session,此时会弹出SFTP的界面,连接即可。将文件上传到服务器Linux下:执行 lcd “E:\Work”(自己的目录);(使用 ls 查看linux目录,lls查看windows的,cd切换Linux的,lcd切换windows的;)注:不能传文件夹,需要压缩后然后执行 put 文件,这个文件就是你windows目录下的文件,put “E:\Work\A.zip” 即可;从Linux服务器下在文件到.
2021-04-23 11:11:32 352 2
原创 Linux端创建Git服务器,Windows端做客户端
在Linux端创建Git服务器方法:Ubuntu上安装Git服务器端创建 git 用户windows克隆Linux仓库Ubuntu上安装Gitsudo apt-get install git ,之后哎终端测试git --version是否有信息输出;服务器端创建 git 用户切换到用户目录 :cd 即可,我的当前目录是/home/tom;查看用户是否存在 :id tom;不存在就创建用户和密码(一般省略) :useradd tom,passwd git ;用户目录下创建文件夹:cd ~;m
2021-04-19 20:03:53 133
原创 Qt QSS样式表总结
字体属性:(font)大小 {font-size: x-large;}(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX、PD样式 {font-style: oblique;}(偏斜体) italic;(斜体) normal;(正常)行高 {line-height: normal;}(正常) 单位:PX、PD、EM粗细 {font-weight: bold;}(粗体) lighter;(细体) normal;(正常)变体 {font-variant: small-c
2021-03-08 14:36:50 2066
原创 Qt5基础回顾
1、Qt信号槽机制的优势(1)类型安全。需要关联的信号和槽的签名必须是等同的,即信号的参数类型和参数个数同接收该信号的槽的参数类型和参数个数相同。不过,一个槽的参数个数是可以少于信号的参数个数的,但缺少的参数必须是信号参数的最后一个或几个参数。如果信号和槽的签名不符,编译器就会报错。(2)松散耦合。信号和槽机制减弱了Qt对象的耦合度。激发信号的Qt对象无需知道是哪个对象的哪个槽需要接收它发出的信号,它只需在适当的时间发送适当的信号就可以了,而不需要知道也不关心它的信号有没有被接收到,更不需要知道是哪个对
2021-03-02 10:19:43 785
原创 Qt 使用QJson创建json字符串
string jsonStr;QJsonObject http_body;QJsonObject child_Json;QJsonArray child_array;for(int i=0;i<vPreseInfo.size();i++){ QJsonObject point_body; point_body.insert(QStringLiteral("presetPointIndex"),QJsonValue(vPreseInfo[i].m_iPreseID));.
2021-02-23 10:59:04 499 1
原创 Qt QPainter鼠标绘制线条、矩形、多边形
Qt通过鼠标绘制线条、矩形、多边形本质都是根据鼠标的坐标位移,使用QPainter的自带的函数进行绘制。具体代码如下:graphicspainter.h#ifndef GRAPHICSPAINTER_H#define GRAPHICSPAINTER_H#include <QWidget>#include "shape.h"#include "paintrectline.h"class GraphicsPainter : public QWidget{ Q_OBJECT
2021-01-20 16:09:00 5687 4
原创 ffmpeg安装注意事项
ffmpeg Linux安装:1.安装SDL:sudo apt-get install libsdl1.2-devsudo apt-get install libsdl-image1.2-devsudo apt-get install libsdl-mixer1.2-devsudo apt-get install libsdl-ttf2.0-devsudo apt-get install libsdl-gfx1.2-dev2.安装x264:git clone https://github.
2021-01-13 14:39:32 352
原创 Qt 窗口中控件拖动区域限制
在一个QWidget中拖拽一个控件并限制其在控件中移动不能超出范围,使用相对坐标进行处理,并且在限制时只能计算鼠标的坐标,不能依赖于控件的坐标做判断条件。具体代码,继承QWidget,重写鼠标事件 void mousePressEvent(QMouseEvent *event)override; void mouseMoveEvent( QMouseEvent * event )override; void mouseReleaseEvent(QMouseEvent *event)override;
2021-01-07 17:25:52 2333
原创 QTreeWidget实现节点过滤查询
继承QTreeWidget重写一个类//展开void DragTreeWidget::parentExpand(QTreeWidgetItem *item){ if (item->parent() != NULL) { QTreeWidgetItem *pItem = item->parent(); if (! pItem->isExpanded()) { pItem->setExpande
2020-12-29 17:05:12 1324 2
原创 QWidget|QFrame设置背景透明且可以带有边框颜色
之前在项目中有个需求:视频播放窗口电子放大功能,需要在播放视频的QWidget上绘制一个可以拖拽的矩形框,但是单独的drawRect并不能获得焦点去拖拽。于是乎就另外想到一个办法使用一个透明的QWidget覆盖到该窗口上,将其背景设置为透明即可,但是设置透明之后,其底色的黑色无法消除,经多方CSDN博主的成果于一身,搞定了该需求。其实就是这么几点:设置背景透明setWindowOpacity(1);this->setAttribute(Qt::WA_TranslucentBackg
2020-12-23 15:02:08 6537 2
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关注的人