- 博客(125)
- 收藏
- 关注
原创 QCustomPlot实现波形图的拖拽 缩小放大等功能
【QT教程】使用qcustomplot完成对图像的拖动、框选缩放、自动缩放、游标等操作_qcustomplot 缩放-优快云博客
2024-11-05 16:38:56
540
原创 Qt和c++面试集合
槽:槽函数其实就是普通的C++函数,可以是虚函数、static函数,可以被重载,可以被访问修饰符修饰,也可以被其他C++成员函数调用等,它唯一的特定就是可以和信号连接。事件过滤器类只需对当前安装的对象进行处理,无需关心其他操作,且一个事件过滤器类可以被多个对象使用,例如Qt文档中的按键过滤示例,KeyPressEater类中的eventFilter过滤了所有的键盘按下事件,只要安装此事件过滤器的控件,都接收不到键盘按键按下的事件,这种就是对某个通用的事件进行过滤,可以进行多次复用。否则返回false。
2024-10-10 17:26:53
1680
原创 qt当中ui卡顿如何处理,以下是几种处理方法
Qt 提供了一些性能分析工具,如 QElapsedTimer、QTime 和 QCoreApplication::processEvents() 等,可以帮助定位和分析性能瓶颈,并进行相应的优化。将耗时的操作放在单独的线程中执行,以避免阻塞主线程。对于需要频繁更新的图形操作,可以考虑使用 OpenGL 或 Qt Quick/QML 来加速绘图和渲染过程,以提高性能和响应速度。: 在执行耗时操作时显示进度条或状态指示器,以告知用户正在进行处理,并防止用户对应用程序的响应不确定性导致不必要的不满。
2024-06-20 17:42:40
1134
原创 c++设计模式之一创建型模式
不同之处在于,在 Animal 类中我们添加了一个 performAction() 方法,该方法调用了 makeSound() 方法。在 main() 函数中,根据用户的选择实例化不同的子类,并通过基类指针调用 performAction() 方法。这样,具体调用哪个子类的方法由子类自己实现,父类并不知道具体的子类实例化。在 main() 函数中,我们使用指向基类的指针 animal,通过 new 实例化具体的子类,并调用其方法。只能在父类中写方法调用,具体调用哪一个类的方法交给子类实现。
2024-06-20 11:29:46
407
原创 虚函数 虚表 虚指针!
以下是运行方面的,通过虚函数和对象的指针和引用实现,通过虚函数和继承实现多态。多态在运行和编译两个方面当中c++代码示例。虚函数是在基类中声明为虚拟的成员函数,它在。虚表和虚函数的关系以及虚表实现原理。在编译方面的多态性,主要表现在。这个是函数重载方面的多态性。这个是计算符号方面的多态性。,用于实现运行时多态性。
2024-06-11 17:15:44
200
原创 服务器中多路复用
服务器的多路复用(Multiplexing)主要指的是在高性能服务器上,通过一种技术使得单个进程能够同时处理多个网络连接或请求。在服务器编程中,传统的做法是为每个连接或请求分配一个单独的进程或线程。然而,由于每台服务器的资源(如内存、CPU等)有限,这种方法在处理大量并发连接时可能会遇到性能瓶颈。具体来说,服务器会监听多个套接字(socket)上的连接请求,当有新的连接请求到来时,服务器会将其加入到一个事件队列中。这些技术都能够有效地提高服务器的并发处理能力,使其能够同时处理大量的网络连接和请求。
2024-02-18 10:06:01
447
原创 U-Boot 启动流程详解
但是这个不是最终使用的链接脚本,最终的链接脚本是在这个链接脚本的基础上生成的。的启动流程,首先要找到“入口”,找到第一行程序在哪里。程序的链接是由链接脚本来决定的,所以。时候会用到,这些变量要最终编译完成才能确定的!,这也是为什么我们裸机例程的链接起始地址选择 0X87800000。的映射文件,可以从此文件看到某个文件或者函数链接到了哪个地址,中有一些跟地址有关的“变量”需要我们注意一下,后面分析。以外,其他的变量值每次编译的时候可能会变化,如果修改了。编译出来的代码放到中断向量表后面。
2024-02-02 09:06:38
1033
原创 u-boot源码详解(2)
第 422 行定义了变量 version_h,这变量保存版本号文件,此文件是自动生成的。定的终极目标列表,比如执行“make mx6ull_alientek_emmc_defconfig”,那么 MAKECMDGOALS。第439行判断KBUILD_EXTMOD是否为空,如果KBUILD_EXTMOD 为空的话条件成立,下的部分不为空条件就成立,很明显此处条件成立,变量 config-targets=1。第 423 行定义了变量 timestamp_h,此变量保存时间戳文件,此文件也是。
2024-02-01 11:31:34
515
原创 U-Boot重点源码详解
文件夹就是和具体的板子有关的,打开此文件夹,里面全是不同的板子,毫无疑问正点原子的开发板肯定也在里面(其中imxdownload是烧录文件 u-boot*这些文件是编译产生的。这个文件夹里面的文件都是跟 ARMV7。,只是freescale 后来被。芯片的板子都放到此文件夹中,可以看出有很多架构,比如。文件夹,在里面找到和。的时候需要重点关注的。文件夹里面有个名为“
2024-01-31 11:54:03
1102
原创 linux下tar压缩解压文件的命令使用推荐
一般来说,bzip2的压缩率较高,但压缩和解压缩速度较慢;而gzip的压缩和解压缩速度较快,但压缩率较低。因此,对于大文件或需要快速压缩的情况,可以选择使用gzip;对于需要高压缩率的情况,可以选择使用bzip2。
2024-01-25 13:46:29
419
原创 写入linux文件用QByteArray而不用QString直接写入
直接写入文件通常是为了更好地处理二进制数据、优化性能、提高灵活性或简化内存管理。这并不意味着在所有情况下都应该使用。选择哪种方法取决于具体的需求和上下文。
2024-01-24 15:45:02
441
原创 QFILE读文件的时候 为什么不直接read而是先转到QTextStream当中在读取
类提供了基本的文件操作功能,如打开、读取、写入和关闭文件。但是,当你提到“先转到。但如果你需要解析或处理文本文件中的结构化数据,那么使用。当中在读取”,实际上是在描述一个常见的模式,用于从文本文件中读取数据。如果你只是简单地读取二进制数据或纯文本数据,那么直接使用。
2024-01-24 15:30:16
391
原创 Cortex-A7 MPcore处理器,cortexA7架构,处理器运行模型,寄存器组
Cortex-A7 MPCore 的 L1 可选择 8KB、16KB、32KB、64KB,L2 Cache 可以不配,也可以选择 128KB、256KB、512KB、1024KB。I.MX6UL配置了32KB 的 L1 指令 Cache和32KB 的L1 数据 Cache,以及128KB 的 L2 Cache。Cortex-A7MPCore 使用 ARMv7-A 架构,主要特性如下:①、SIMDv2 扩展整形和浮点向量操作。
2024-01-23 10:05:01
877
原创 在Linux系统中,/dev和/sys/dev目录分别存放的是不同类型的设备文件。以及关于Linux目录说明
这些设备文件是由应用层通过mknod函数创建的,如果底层驱动对mknod的设备号有对应的驱动,那么应用程序在open "/dev/**"时,就会调用到底层的驱动。这个目录存放的是系统的所有设备,按照设备挂载的总线类型,组织成层次结构,保存了系统所有的设备。总的来说,/dev目录存放的是应用程序与内核交互的设备文件,而/sys/dev目录存放的是系统的所有设备,这些设备由文件系统进行管理。在Linux系统中,/dev和/sys/dev目录分别存放的是不同类型的设备文件。
2024-01-22 10:20:14
1312
原创 linux下交叉编译器以及qmake的安装(用poky更简单!)
先在交叉编译器官网下载arm相关的交叉编译器 然后下载qt源码 再进行编译(有些脚本跟随交叉编译器稍微改改就行)。只要按照博主的来就可以实现。
2024-01-22 08:53:01
1626
原创 编译过程四个步骤
预处理:gcc -E hello.c -o hello.i。预处理器处理C语言源代码,扫描程序中所有的#开头的预编译指令,并将它们替换成相应的文本。处理后的代码通常以.i为扩展名。 编译:gcc -S hello.i -o hello.s。编译器将预处理器处理后的代码转换成汇编代码。它会对代码进行语法和语义分析,检查程序的语法错误和类型错误,并生成汇编代码。处理后的代码通常以.s为扩展名。 汇编:gcc -c hello.s -o hello.o。汇编器将汇编代码转换成机器码。它会将汇编代码转换为可执行
2024-01-19 16:51:02
465
原创 Qt高级用法以及日志输出,持续更新
QPaintEngine 类用在 QPainter 和 QPaintDevice 之间,通常情况下对开发人员而言它是透明的,我们无需重新定义 QPaintEngine ,除非需。动态类型转换使用dynamic_cast运算符进行,是程序在运行的过程中进行类型转换,转换不成功会返回空指针或者抛出异常。translate(width() / 2, height() / 2)代表将原点平移到窗口中心位置。// 删除赋值运算符。中,exec函数中的消息循环返回,exec函数也退出,最后返回到调用对话框的代码处。
2024-01-18 10:24:20
1212
原创 在编写Qt5程序时候 判断在Qt桌面上又能在arm上面的宏
elif defined(Q_OS_LINUX) && defined(Q_PROCESSOR_ARM) // Linux ARM 平台。#elif defined(Q_OS_MAC) && defined(Q_PROCESSOR_ARM) // Mac ARM 平台。#ifdef Q_OS_WIN // Windows 平台。#else // 其他平台。
2024-01-18 09:22:21
464
原创 c++容器为什么要保证析构函数不能抛出异常
因此,为了确保C++程序的稳定性和可靠性,C++标准规定析构函数不能抛出异常。在编写自己的C++代码时,应该遵循这一规定。如果一个函数在执行过程中可能会抛出异常,那么应该使用try/catch块来捕获并处理这个异常,而不是让异常传播到析构函数中。C++标准库中的容器,如vector、list、map等,在析构函数的设计上有一个重要的约束:析构函数不能抛出异常。
2024-01-12 14:31:36
382
原创 c++ boost---容器与数据结构arrary dynamic_bitset unordered
目录一级目录二级目录三级目录一级目录二级目录三级目录
2024-01-12 13:49:48
387
原创 c++ boost---测试库
lightweight_test 不需要编译,也不需要特定的入口函数,测试断言可以用在程序里的任何地方,就像使用 assert 一样,如果断言失败,就会增加内部的错误计数,lightweight_test 提供函数 boost.report_errors ( ) 来输出测试结果,在测试结束时,我们必须调用 report_errors( ),否则会发生 BOOST_ASSERT 断言错误。正常情况下,BOOST_ASSERT和BOOST_ASSERT_MSG以及C/C++提供的assert宏。
2024-01-12 12:45:40
879
原创 QThread与事件循环
1.QObject继承QThread,重写QThread::run没有事件循环,此时QObject处于创建时线程。 默认QThread::run会调用QThread::exec(),由于重写,所以此时没有调用。2.QObject movetothread(&QThread),具有事件循环,QObject处于QThread线程。3.QThread::run这种没有事件循环方式的QThread用法中,4.8之后,即便里面的QObject对象调用deletelater,qt也能保证在qthread结束后正
2024-01-12 10:28:25
486
原创 C++ Boost--库之小工具
optional也重载了 operator * 和 operator - > 以实现与指针相同的操作 , get ( ) 和 get _ ptr ( ) 能够以函数的形式获得元素的引用和指针 . 需要注意的是它们内部仅使用 **BOOST_ASSERT(断言,egt:BOOST_ASSERT(y!,它很像是个仅能存放一个元素的容器,实现了未初始化的概念:如果元素未初始化,那么容器就是空的,否则,容器内的值就是有效的、已经初始化的值。,就如同一个标准容器对元素的要求,并不需要T具有缺省构造函数,但。
2024-01-10 18:16:07
981
原创 右值引用、移动语义、完美转发
拷贝语意相信大部分人都比较熟悉了,也比较好理解。在这个例子中,每次都会拷贝 s_ 和 v_ 两个成员,最后 cf1、cf2、cf3 三个对象的内容都是一样的。每次执行移动语意,是分别调用 s_ 和 v_ 的移动语意函数——移动语意:移动构造函数 Foo(Foo&&) 、移动赋值操作符 Foo& operator=(Foo&&)。v3 = std::move(v1) 调用的是移动赋值操作符,将 v1 的内容移动给 v3 ——v2 = v1 调用的是拷贝赋值操作符,v2 复制了 v1 的内容 ——
2024-01-08 11:22:04
928
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人