- 博客(127)
- 资源 (11)
- 问答 (2)
- 收藏
- 关注
原创 QT基础 框选控件
当用户释放鼠标按钮时,检查框选区域内有哪些控件。这可能需要你遍历界面上的所有控件,并检查它们是否在框选区域内。:一旦你知道了哪些控件被框选,你可以执行相应的操作,比如高亮这些控件、执行某个命令等。方法中,根据鼠标移动的位置绘制一个矩形框,表示用户正在框选的区域。:当用户按下鼠标按钮并开始移动时,开始追踪鼠标的位置。:对于你想要框选的控件,你需要重写它们的鼠标事件处理函数(如。先说需求:比如有的时候想要框选界面上的控件,要怎么判断呢?//如果不想要矩形框去掉相应绘制窗口就可以了。方法来获取鼠标的当前位置。
2024-04-15 17:41:32 185
原创 C++ 类型推导Auto及decltype
除此之外使用 auto 会删除引用、const 限定符和 volatile 限定符,如下面代码会输出什么呢?是 C++11 及其后续版本中引入的两个关键字,它们都用于自动类型推导,但在使用和行为上有一些重要的区别。而是被立即处理,并且在当时诊断产生的所有错误。关键字在 C++ 中用于自动类型推导。编译器会根据初始化表达式自动推断变量的类型。关键字在编译时推导变量的类型,并且在推导过程中会考虑引用和。关键字使代码更加简洁,因为你不需要显式地写出变量的类型。因此,如果在 decltype。
2024-04-12 16:27:56 345
原创 C/C++ 内存分配方法对比
抽象级别new是一个高级别的抽象,它会自动调用构造函数和析构函数,并处理内存分配和释放。而allocate是一个低级别的抽象,只负责分配和释放内存,不涉及对象的构造和析构。初始化new会初始化分配的内存,而allocate只分配未初始化的内存。错误处理new在内存分配失败时抛出异常,而allocate在失败时返回nullptr(如果它设计为这样做的话)。使用场景new通常用于直接创建对象,而allocate通常用于实现自定义容器或需要更精细控制内存分配的场景。释放内存new分配的内存使用delete。
2024-04-12 14:47:35 613 2
原创 C++基础 别名和typedef
C++ 别名是在编程中用于为类型、命名空间或函数定义别名的一种方式。常见方式比如引用、宏定义、typedef。下面说说几种不常用。
2024-04-12 14:32:21 173
原创 C++ 基础 alignas alignof
alignas是C++11引入的一个关键字,用于指定对象或类型的对齐方式。对齐方式指的是对象或类型在内存中的起始地址的对齐方式,对齐方式的选择可以在一定程度上提高程序的运行效率。,表达式必须是 0 或幂为 2(1、2、4、8、16、...)的整型常量表达式。所有其他表达式的格式不正确,要么会被编译器忽略掉。可以对 struct。alignof运算符将指定类型的对齐方式(以字节为单位)作为类型 size_t。或变量声明使用 alignas。
2024-04-12 13:46:12 271
原创 开源 C/C++(DuckX)操作docx文旦
1.详情创建、读取和写入 Microsoft Office Word docx 文件,可以不使用Microsoft Office组件。目前看操作docx文件绕不开Microsoft Office组件,虽然本项目可以读取docx文档,但是里面排版都消失了,除此之外,doc文件不支持,支持window、linux。主要添加.h和.cpp文件。
2024-01-25 09:43:59 609
原创 Qt基础 低功耗蓝牙通信
首先说下基础知识,蓝牙连接是分经典蓝牙和BLE(低功耗)蓝牙的,他们的通信方式不一样,经典蓝牙用的socket,BLE用的是服务与特征。平台式VS2019+Qt5.12.11,但是Qt支持蓝牙并不好,如果你们有其他方案的话,尽量使用其他方案,因为有些问题,博主也没解决。添加头文件。
2024-01-23 11:00:53 827
原创 VS C++ 查找虚拟机
方式2:找文件路径 -- C:\Program Files\VMware\VMware Tools。方式1:搜索服务 -- 包含WMware Tools / WMware 物理磁盘助手服务。方式3:寻找进程 -- vmtoolsd.exe。
2023-12-20 11:24:07 435
原创 VS+Qt 打包Python文件
先说下环境vs2019+Qt5.12.11+python3.8,这里需要注意如果你要适配Win7的系统,python最好是9以下,以上不兼容,也没时间找方法,找到评论说下。他们大部分用的Anaconda 这个外部工具处理python库的,将python环境打包成一个文件,这里我测试失败了,但是大体思路其实都是一样的:包含python环境。后面我分析软件崩溃的原因,将将错误界面截图下来,发现是因为程序文件缺失这几个文件导致的。如果你是环境是Qt Creator,可以参考这个。,下面来谈谈随exe文件打包。
2023-12-19 15:19:01 461
原创 C++基础 std::funtion简说
类模板是通用多态函数包装器。的实例能存储、复制及调用任何可复制构造 (CopyConstructible)的可调用 (Callable)目标——函数、lambda 表达式bind 表达式或其他函数对象,还有指向成员函数指针和指向数据成员指针。存储的可调用对象被称为的目标。若不含目标,则称它为空。调用空的目标导致抛出异常简而言之:std::function实现了一套类型消除机制,可以统一处理不同的函数对象类型。以前我们使用函数指针来完成这些;
2023-12-08 10:00:55 159
原创 C++基础 std::Move简说
Move最主要的作用是实现移动语义,避免不必要的复制操作,move函数的参数是一个通用引用(universal reference),既可以接受左值类型,也可以接受右值类型。首先,函数参数T&&是一个指向模板类型参数的右值引用,通过引用折叠,此参数可以与任何类型的实参匹配(可以传递左值或右值,这是std::move主要使用的两种场景)。提到Move引出一个C++ 中有左值和右值的概念,简单来说,左值指的是可以取地址的表达式,右值指的是不可以取地址的表达式。传递类型保持不变还是右值,而左值经过。
2023-12-07 16:10:26 527
原创 开源闭源杂谈
总的来说,开源和闭源软件都有其优缺点,选择哪种方式取决于具体的情况和需求。在数字化时代,我们需要更加开放和协作的态度来推动技术的发展和创新,同时也需要保护商业利益和技术安全。通过开源,软件开发人员可以在全球范围内进行协作和创新,这种分布式的方式可以加速技术的发展和创新的速度。此外,开源社区的透明度和开放性可以鼓励更多的参与和贡献,使得软件更加完善和适应各种不同的需求。这是因为大模型需要大量的数据和计算资源来进行训练和优化,而开源可以促进资源的共享和优化,使得更多的人可以参与到大模型的研发中来。
2023-11-17 11:36:55 120
原创 Qt基础 QT QTextEdit自动滑动
获取QTextEdit的QScrollBar,然后再构造函数算出QScrollBar歩长pageStep(这里不知道为什么在其他地方算的步长很大),然后就定时器QScrollBar++或者--啦。最近公司在做一个提词项目,本来对这里功能难易感觉属于一般的,谁知道碰到一个很简单问题,搞了半天,先喷一下百度浏览器 不知道是算法越来越垃圾,还是我检索的有问题,还是说这个问题很难。那个End不用看意思就知道光标移动到文章尾部,还自动滚动,滚尼ma呢。严重标题与内容不符,别用猪脑写文章好不好!
2023-11-14 10:32:21 486
原创 话题 It人的护城河
综上所述,技术能力的深度、对创新的追求以及沟通协作等软实力都是程序员的护城河。这些能力相互补充,共同构成了程序员的全面素质。只有不断提升这些能力,程序员才能更好地应对不断变化的技术环境和工作挑战,为我们的社会构筑更加安全、稳定和创新的未来。程序员的护城河可以包括多个方面,包括但不限于技术能力的深度、对创新的追求以及沟通协作等软实力。
2023-11-09 11:53:58 92
原创 C++基础 关于std::shared_ptr循环应用问题
这种情况下,内存无法被垃圾收集器正确释放,从而可能导致内存泄漏,在这种情况下,A的实例可以通过bPtr引用B的实例,反之亦然。但是,如果这些是唯一的引用,那么垃圾收集器无法确定这两个对象何时不再需要,因为它们互相引用,形成了一个循环。使用引用计数技术追踪所管理对象的引用数量,当引用计数变为零时,自动销毁所管理的对象。可以自动释放动态分配的内存,当指针超出作用域或被重置时,它会自动删除所管理的对象。是一种独占式智能指针,用于管理唯一的对象,确保只有一个指针可以访问该对象。对象存在,所管理的对象也会被销毁。
2023-10-18 16:33:16 135
原创 Qt基础-乱码问题
围绕这些名词:字符编码、字符集、如ASCII、UNICODE、GBK、GB2312、GB18030、UTF-8、UTF-16等,源码字符集、执行字符集,MSVC编译器、MinGW编译器等,差不多就够了。个人常用原生的QtCreator开发,Qt+VS环境对调试非常友好,其它的了解不多,但乱码问题应该也没有的,因为源码字符集以及执行字符集都是GBK,统一就没有问题。,原因就是QtCreator源码字符集默认UTF8的,MSVC执行字符集默认GBK的,不统一乱码自然出现。源码字符集 和 执行字符集编码不统一。
2023-10-18 15:42:06 99
原创 Qt基础 QPieSeries饼状图
tip:上面代码QObject::connect按道理不应该是按照下面这样去弄,按照上面调式我发现循环外事。QPieSeries Class:饼状图数据。表示饼图系列中的单个切片(其实就是标签)管理图表系列、图例和轴的图形表示。可以显示图表的独立小部件。
2023-10-17 17:26:30 363
原创 QT基础 QChart绘制折线
本质逻辑上与上面差不多,但是如果要放大/缩小等操作,需要重写一下QChartView函数,如果是触摸的需要重写QChart的bool sceneEvent(QEvent *event);
2023-10-11 17:42:54 362
转载 关于Qt QPushbutton 图标与字体间距处理办法
/新建布局,把元素一一添加到布局,再把布局设置到按钮上。//new两个Label,一个放置图片,一个放置文本。//设置文字的字样、字体、颜色等样式及文本框宽度。//设置描述按钮功能的文字。//加载图片到Label。
2023-10-10 17:57:11 973
原创 我的创作纪念日
在学习的过程中,我会通过写作来记录自己的思考和见解,这有助于加深对知识的理解和掌握。在写作中,我需要与粉丝进行互动和交流,这让我学会了如何更好地传达自己的想法和观点,并倾听他人的反馈和建议。总之,作为一个程序员,你需要平衡好编程和写作的需求,并在两个领域中不断提升自己的技能和能力。总的来说,创作让我成长了许多,不仅提高了我的思考能力和表达能力,还让我学会了与他人沟通和合作。通过将创作与工作和学习的经验和知识相结合,我能够更好地发挥自己的潜力和才能,同时也能够为他人和社会带来积极的影响。
2023-09-26 09:52:05 50
原创 QML Book 学习基础4(状态和转换)
用户界面的某些部分可以用状态来描述。状态定义一组属性更改,并且可以由特定条件触发。QML 中定义状态,该元素需要绑定到任何项目元素的数组。states状态通过状态名称标识状态是通过状态名标识的,最简单的形式是由元素对象上的一系列属性更改组成。默认状态由元素对象的初始属性定义,并命名为""(空字符串)。通过为定义状态的元素的状态属性指定新的状态名称,可以更改状态。控制状态的另一种方法是使用State元素类型的when属性。
2023-08-29 11:58:10 204
原创 QML Book 学习基础3(动画)
Qt 动画是一种在 Qt 框架下创建交互式和引人入胜的图形用户界面的方法,我们可以认为是对某个基础元素的多个设置。
2023-08-29 09:14:08 187
原创 QML Book 学习基础2(基本元素控件)
图像的源使用 source 属性指定为 URL。图像可以以Qt支持的任何标准图像格式提供,包括位图格式(如PNG和JPEG)和矢量图形格式(如SVG)。如果需要显示动画图像,请使用。Text项的初始宽度依赖于所设置的字体和文本字符串。没有设置宽度且无文本的Text元素将不可见,因为初始宽度将为0。矩形项用于用纯色或渐变填充区域,和/或提供矩形边框。需要注意如果长宽没有设置,是无法看到矩形的。AnimatedSprite或AnimatedImage。
2023-08-28 15:58:08 240
原创 QT基础 关于QT延迟
使用QEventLoop传入参数msec,使程序延时msec毫秒。这种方法不会阻塞当前线程,尤其适合Qt的单线程带UI程序,或者UI线程,因为线程阻塞时,很明显的现象就是UI卡死。当然,你也可以更改addMSecs为addSecs使程序延时msec秒。如果去掉QCoreApplication::processEvents(QEventLoop::AllEvents, 100);可以延时,但也会阻塞线程。
2023-08-25 15:47:11 1226
原创 Qt基础 线程池
主要属性:1、activeThreadCount: 此属性表示线程池中的活动线程数,通过activeThreadCount() 调用。2、expiryTimeout: 线程活着的时间。没有设置expiryTimeout毫秒的线程会自动退出,此类线程将根据需要重新启动。默认的expiryTimeout为30000毫秒 (30 秒)。如果expiryTimeout为负,则新创建的线程将不会过期, 在线程池被销毁之前, 它们将不会退出。
2023-08-25 14:29:24 105
翻译 QML Book 学习基础1
QML是一种声明性语言,用于描述对象之间的关系。遵循HTML-JavaScript模式,但是为QML和QtQuick重新设计过,因此是在两者基础上基础建立。property通常通过id访问特定元素,或者使用parent关键字访问父元素。所以最好将根元素命名为root,使用id: root。这样就不必考虑如何在QML文件中命名根元素。这里需要注意的是每个ID都是唯一的,遵循后来为尊(假如有两个Button(在同一个作用域内)的id都是root,则最后那个会覆盖前面那个)
2023-08-25 11:57:42 62
转载 Qt基础 hid设备通信
这篇文章主要是记录C++与USB-hid设备(即免驱动的usb设备,鼠标、键盘就是hid设备)进行通信,它也是一种USB设备,只不过不需要安装驱动,如果要与非USB-HID设备通信请参考libusb。libusb首页github地址以上就是hidapi库的配置方法和使用,仅作为学习记录参考。如果本文章有误,请指出,感激不尽!
2023-08-14 11:07:04 1212
原创 QT基础 Hid设备插拔检测
hid设备检测踩了好多坑,本博客一一列出来,先说环境是Qt5.12+Vs2019的,如果是MFC的框架可以去看MFC的了,两者环境区别还是很大(我帮你踩了)。这里主要说一下,插拔Hid设备检测,检测hid可以分为两步。因为处理消息nativeEvent是QWIdget函数在写的时候继承QWidget,除此还有一些博客会用nativeEventFilter这个消息处理,这里wParam就是Hid设备操作。注册监控需要注意是设备GUID,每种设备GUID是不一样的,下面基本上罗列常用。
2023-08-10 18:14:21 585
原创 QT 常用数据结构整理
当添加新的元素时,QList会根据需要自动扩展内存空间,以容纳更多的元素。如果返回值大于1,说明程序之前使用 insertMulti() 函数为一个 key 添加了多个 value 值(QMap 允许一对多映射,多个 key-value 元素 的 key 值相同,但一般不建议这样做)。第一个 insert() 自动添加新节点到红黑树的排序位置,红黑树只按照 key 排序,同样 key 的多个 value 值不会排序,同样 key 的新节点总是插入到同样 key 旧节点的最前面。
2023-07-28 13:57:52 876
原创 QT elidedText 避坑
我们知道这段代码是省略名称 但是如果你是new出来的,这里你有样式 并且样式里用的字体大小,把这段代码加到样式下面可以,如果单独写就不行。解决办法:再设置一下字体。
2023-07-14 14:03:36 182
原创 qt Qss 边框渐变
使用QGraphicsEffect:你可以使用Qt的图形效果框架来实现按钮的渐变边框效果。首先,你可以创建一个QGraphicsEffect对象,并将其设置为按钮的图形效果。然后,你可以使用QLinearGradient来创建渐变效果,并将其设置为QGraphicsEffect的属性。使用QPainter绘制:你可以通过重写按钮的paintEvent函数,使用QPainter来绘制按钮的边框。在绘制过程中,你可以使用QLinearGradient来创建渐变效果,并使用QPen来设置边框的样式。
2023-06-30 17:36:05 1286
翻译 Qt 关于Qt信号多层传递优化
有一个信号(假如是clicked信号),只能从D->B->C->A类这样传递信号,会很冗余,有没有什么好的办法?我们其实可以做全局信号传递类TranceClass(就叫T吧),只需要从D->T->A就可以了,但是T被很多类调用,如果不小心delete就很麻烦了,这就引出的"单例类"用法其实很简单,我们只需要获取传递类T的单例对象就可以,然后就像正常信号接收消息,然后在传送消息(如果参数就传参数)下面是单例T的写法,可以参考一下
2023-06-19 18:00:03 317
原创 操作数据库插入数据
数据库是有唯一的主键(你可以设置也可以不设置),主键设置了数据库是唯一不可改变的。当我们插入数据时,因为主键是不可以改变的所以你想在中间插入是不行的,当然你也可以不设置主键处理。同时,为了保护您的数据安全,建议您在使用这些语句之前备份您的教据。其中,temp_table是您要创建的临时表的名称,original_table是您要插入数据的原始表的名称。1.首先,您需要创建一个临时表,该表与原始表具有相同的结构,但不包含主键约束。5.最后,您需要将临时表中的数据插入到原始表中,并将主键和后续数据往后移动。
2023-05-31 15:19:32 855
Qt WIFI连接demo
2023-10-20
解决libfaad_release静态编译出错问题,这个lib是静态编译的
2022-08-17
windows核心编程-73.zip
2020-01-02
C ++多线程编程实战姜佑译.rar
2019-05-21
MFC Clist 字体颜色 行列背景 整行高度
2018-05-21
Visual Studio 2019 设置问题
2023-11-24
求助,mfc界面拖拽到电脑边框会变成这样,打断点也进入OnPaint()里
2019-10-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人