自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

个人技术博客

计算机相关技术

  • 博客(392)
  • 收藏
  • 关注

原创 Qt 实战(7)元对象系统 | 7.4、属性系统:深度解析与应用

在QObject的子类中,你可以使用Q_PROPERTY宏来定义属性。[CONSTANT][FINAL])其中,type是属性的数据类型,name是属性的名称,是读取属性值的函数,是设置属性值的函数,是属性值变化时发出的信号等。假设我们有一个Person类,需要为其添加一个名为ageQ_OBJECTpublic:if (m_age!

2024-07-19 15:47:35 576

原创 Qt 实战(6)事件 | 6.3、自定义事件

首先,你需要为你的自定义事件定义一个唯一的事件类型。Qt 允许你使用枚举值来区分不同的事件类型。由于 Qt 的内置事件类型已经很多,你需要从函数获取一个唯一的事件类型标识符。// 定义一个全局的变量来存储自定义事件类型。

2024-07-18 22:53:34 485 1

原创 Qt 实战(2)搭建开发环境 | 2.2、编译构建

1、C++ 反射机制 typeid与dynamic_cast的作用。Qt Creator 如何给已有文件添加新的ui界面文件。

2024-07-16 17:58:30 101

原创 Qt 实战(7)元对象系统 | 7.3、QMetaObject详解

是Qt框架中的一个核心组件,它实际上是一个存储在静态数据区的结构,包含了类的名称、属性、方法、信号、槽以及其他与类相关的元数据。在C++的标准环境中,我们通常无法在运行时获取类的元信息,因为大部分信息在编译时已经丢失。然而,Qt通过其独特的元对象编译器(Meta Object Compiler, MOC)解决了这一问题。MOC会预处理Qt类的定义,生成一个包含类元信息的QMetaObject实例,这个实例会在运行时被Qt框架使用。

2024-07-16 15:46:12 899

原创 C/C++ 知识点:枚举类型同名冲突问题

在C++编程中,枚举类型(enum)是一种非常有用的数据类型,它允许程序员定义一组命名的整型常量,使得代码更加清晰、易于维护。然而,随着项目规模的扩大和代码复杂度的增加,枚举类型之间的同名冲突问题可能会逐渐浮现出来。本文将深入探讨C++枚举类型同名冲突的原因、影响以及几种有效的解决方案。

2024-07-15 17:51:48 263

原创 Qt 实战(2)搭建开发环境 | 2.2、.pro文件详解

pro文件在Qt项目中扮演着至关重要的角色。它不仅是项目的配置文件,还是实现自动化编译和跨平台开发的关键。通过合理编写.pro文件,开发者可以高效地管理和编译Qt项目。

2024-07-10 23:00:26 649

原创 Qt 实战(2)搭建开发环境 | 2.3、qmake详解

Qt qmake 是一个强大的工具,它简化了 Qt 应用程序和库的编译过程。通过编写项目文件,qmake 能够自动生成适合当前平台的 Makefile,从而大大减少了手动编写 Makefile 的工作量。掌握 qmake 的基本用法和高级特性,将有助于你更高效地开发 Qt 应用程序。

2024-07-10 22:51:32 1082

原创 Qt 实战(7)元对象系统 | 7.2、MOC(Meta-Object Compiler 元对象编译器)

在Qt框架中,MOC(Meta-Object Compiler)是一个至关重要的工具,它负责处理Qt特有的元对象系统(Meta-Object System)的相关代码。MOC是一个预处理器,它扫描包含。

2024-07-04 17:39:09 642

原创 Qt 实战(7)元对象系统 | 7.1、简介

元对象系统是 Qt 对原有的 C++进行的一些扩展,主要是为实现信号和槽机制而引入的,信号和槽机制是 Qt 的核心特征。要使用元对象系统的功能,需要满足以下三个条件类继承自QObject:要使用元对象系统的功能,类必须继承自QObject类。QObject类为Qt对象提供了一个基类,提供了对象树结构管理、事件处理等基础功能。声明Q_OBJECT宏:在类的声明中,必须包含Q_OBJECT宏。这个宏通常放在类的私有部分,用于启用元对象特性,如动态属性、信号和槽等。MOC会处理这个宏,生成元对象代码。

2024-07-04 17:05:43 1149

原创 Qt 实战(6)事件 | 6.2、事件过滤器

事件过滤器是Qt提供的一种特殊机制,允许对象(过滤器)在事件到达最终接收者之前截获事件。通过事件过滤器,开发者可以实施一些全局的事件处理逻辑,比如实现全局的鼠标手势识别、键盘快捷键等。事件过滤器在Qt中提供了一个非常灵活的机制,允许开发者实现一些全局的事件处理逻辑,或者在某些特定情况下提前拦截和处理事件。通过合理利用事件过滤器,可以大大增强应用程序的交互能力和响应性。

2024-06-26 15:03:19 486

原创 Qt 实战(6)事件 | 6.1、事件机制

Qt 框架中的事件机制(Event Mechanism)是一种核心功能,它允许应用程序以事件驱动的方式响应各种外部和内部发生的动作。事件机制在 Qt 中扮演着至关重要的角色,无论是在用户界面的交互还是在后台处理数据时。它不仅确保了程序的响应性和灵活性,还大大降低了编程的复杂性,使开发者能够以更直观的方式来处理异步事件。

2024-06-25 18:01:38 808

原创 C/C++ 知识点:mutable关键字

mutablemutable并不是用于定义变量类型的关键字,而是用于类的成员变量修饰。它允许一个类的常量成员函数(即使用const修饰的成员函数)修改被mutable修饰的成员变量。

2024-06-24 20:03:13 314

原创 Qt 实战(5)布局管理器 | 5.2、深入解析Qt布局管理器

Qt布局管理器是创建灵活和可适应不同设备和分辨率的用户界面的关键工具。通过合理地使用不同类型的布局管理器、嵌套布局、间距和对齐方式以及测试不同环境,开发人员可以创建出功能完善且易于使用的用户界面。希望本文能帮助您更深入地了解Qt布局管理器并为您的开发工作提供有用的指导。

2024-06-18 23:04:09 931

原创 Qt 实战(5)布局管理器 | 5.1、DPI对布局的影响

DPI(Dots Per Inch,每英寸点数或像素数)可以简单地理解为每英寸有多少像素。例如,一个分辨率为160×128的屏幕意味着水平方向上有160个像素,垂直方向上有128个像素。DPI越高,屏幕显示的清晰度就越高。在Qt程序中,DPI的设置会影响字体、图片等元素的显示大小。如果DPI设置得较高,那么字体和图片等元素在屏幕上就会显得更大。DPI是影响Qt应用程序布局的重要因素之一。为了优化布局以适应不同DPI的环境,可以使用布局管理器、响应式布局等方法。

2024-06-18 22:46:31 437

原创 Qt 实战(4)信号与槽 | 4.3、信号连接信号

信号连接信号,顾名思义,就是将一个对象的信号连接到另一个对象的信号上。当第一个对象的信号被发射时,它会触发第二个对象的信号发射,而不直接调用某个槽函数。这种机制在某些场景下非常有用,尤其是当你需要在多个对象之间传递事件或状态时。信号连接信号是Qt信号与槽机制的一种高级用法,它允许我们将一个对象的信号连接到另一个对象的信号上。这种机制在某些场景下提供了更多的灵活性和控制力,特别是在需要在多个对象之间传递事件或状态时。

2024-06-16 22:07:03 517

原创 Qt 实战(4)信号与槽 | 4.2、自定义信号与槽

在Qt中,自定义信号通常在一个继承自QObject或其子类的类中进行。自定义信号在类声明中以signals关键字开头,并且没有返回类型,但可以有任意数量的参数。信号本身不实现任何功能,它们只是用于在对象之间传递事件。Q_OBJECTpublic:// ... 其他成员函数 ...signals:// 自定义信号,带一个int类型参数// 注意:信号没有实现体(即没有函数体),且返回类型为void在上面的代码中,MyObject类继承自QObject,并声明了一个名为mySignal。

2024-06-16 21:49:25 497

原创 Qt 实战(4)信号与槽 | 4.1、信号与槽机制

Qt信号与槽机制是一种用于处理对象间通信的强大机制,它是Qt框架的核心特性之一。信号与槽机制使得Qt对象可以在不了解彼此的情况下进行通信,这种松耦合的设计思想极大地提高了代码的可重用性和灵活性。

2024-06-12 22:56:10 1033

原创 C/C++ 知识点:result_of 模版类

C++中的。

2024-06-12 22:25:35 479

原创 C++ 新特性 | C++ 11 | typename关键字

在C++的模板编程中,

2024-06-12 13:55:32 486

原创 C++ 并发编程指南(13)线程池原理与实践 | 13.3、源码实现

【代码】C++ 并发编程指南(13)线程池原理与实践 | 13.3、源码实现。

2024-06-04 17:50:47 144

原创 C++ 并发编程指南(13)线程池原理与实践 | 13.2、关键组件实现

文章目录一、关键组件实现前言:一、关键组件实现

2024-06-04 17:47:07 292

原创 C++ 并发编程指南(13)线程池原理与实践 | 13.1、实现原理

【代码】C++ 并发编程指南(12)线程池原理与实践。

2024-06-03 22:17:19 222

原创 C++ 并发编程指南(5)线程状态及切换

C++中的线程状态及切换是操作系统和C++线程库(如POSIX线程或C++11及之后的。

2024-05-30 22:50:39 1043

原创 C++ 新特性 | C++ 11 | 尾置返回类型

在C++中,函数返回类型的推导一直是一个重要的特性,它允许程序员在编写代码时更加灵活和简洁。特别是在C++11及以后的版本中,尾置类型推导(Trailing Return Type)的引入,为模板编程和复杂函数的返回类型提供了更多的便利。

2024-05-21 22:28:10 327

原创 C++ 并发编程指南(12)线程中断

在多线程编程中,有时需要在某些条件下停止或暂停一个线程的执行。C++标准库并没有提供一个直接的方法来实现线程中断,但可以通过一些技巧和设计模式来实现类似的功能。本文将介绍如何在C++中使用条件变量和原子操作来实现线程中断。

2024-05-21 22:00:41 535

原创 C++ 并发编程指南(3)线程安全

解释一线程安全是指代码在多线程环境下运行时的安全性。如果一个类或者函数在多线程环境中被安全地调用,且其内部状态和结果不会因为多线程的并发访问而遭到破坏,那么我们就说这个类或者函数是线程安全的,一句话讲就是多线程可以安全访问临界区资源,就是线程安全。解释二多线程同时对内存中的一共享变量操作,最终这个共享变量的值是正确的,那么就是线程安全,反之就是线程不安全。

2024-05-16 22:50:17 981

原创 C++ 并发编程指南(11)原子操作 | 11.7、使用栅栏实现同步

C++多线程中的。

2024-05-16 22:49:10 371

原创 C++ 并发编程指南(11)原子操作 | 11.6、计算机内存结构

计算机内存结构是计算机系统中的核心组成部分,其性能直接影响到计算机的运行效率和数据处理能力。通过对内存的基本组成、类型、结构层次以及局部性原理等概念的深入剖析,可以更好地理解计算机内存的工作原理和重要性。

2024-05-14 23:11:47 1015

原创 C++ 并发编程指南(11)原子操作 | 11.4、通过内存序实现顺序模型

前文介绍了六种内存顺序,以及三种内存模型,本文通过代码示例讲解六种内存顺序使用方法,并实现相应的内存模型。

2024-05-14 23:01:36 850

原创 Qt 实战(3)数据类型 | 3.1、QByteArray

文章目录一、QByteArray一、QByteArray

2024-05-07 09:00:55 257

原创 C++ 并发编程指南(11)原子操作 | 11.5、内存模型

C++ 11标准中最重要的特性之一,是大多数程序员都不会关注的东西。它并不是新的语法特性,也不是新的类库功能,而是新的多线程感知内存模型。本文介绍的内存模型是指多线程编程方面,而非对象的内存布局与内存对齐之类。

2024-04-17 22:57:33 405

原创 C++ 并发编程指南(11)原子操作 | 11.3、原子变量与内存序

在多线程编程中,当多个线程试图同时访问和修改共享数据时,就需要考虑数据的一致性和可见性问题。C++的原子操作提供了对共享数据的无锁访问,但仅仅依赖原子操作并不足以完全解决所有同步问题。这时,原子内存序的概念就显得尤为重要。原子内存序定义了原子操作之间的顺序以及这些操作与程序其他部分的交互方式。它影响了编译器优化、指令重排序以及处理器缓存的行为。选择合适的内存序对于实现高效且正确的多线程程序至关重要。

2024-04-17 20:01:36 320

原创 C++ 并发编程指南(11)原子操作 | 11.2、atomic_flag

C++ atomic_flag是C++标准库中的一个原子标志类,用于实现线程间的同步和互斥。它是C++11引入的,提供了一种轻量级的原子操作方式,可以用于实现简单的互斥锁和条件变量等功能。

2024-04-17 19:51:53 597

原创 Qt 实战(2)搭建开发环境 | 2.1、Windows下安装QT

QT官网:https://download.qt.io/,打开官网地址,如下:目录结构介绍。

2024-04-16 19:56:34 904

原创 Qt 实战(1)Qt 概述

Qt(官方发音 [kju:t],音同 cute)是一个的 C++ 开发库,主要用来开发,也可以开发不带界面的命令行(Command User Interface,CUI)程序。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。

2024-04-16 19:48:56 580

原创 操作系统(1)计算机存储结构

计算机存储结构是指计算机系统中用于存储数据和程序的各种硬件设备及其组织方式。它包括了存储器的层次结构、类型、性能参数以及它们之间的相互关系。计算机存储结构的设计直接影响到计算机系统的性能、稳定性和可扩展性。本文将介绍计算机存储结构的基本概念、组成部分以及它们之间的关系。

2024-04-15 23:16:17 836

原创 Visual Studio 配置代码风格审查工具cpplint

cpplint是一个用于检查C++代码风格的工具,它可以帮助我们发现潜在的编码问题,提高代码质量。cpplint遵循Google的C++编码规范,通过静态分析代码来检查潜在的问题,如命名规范、格式、内存管理等。

2024-04-07 16:01:28 1254

原创 Git 配置BCompare工具

下载。

2024-04-07 16:01:14 515

原创 C++ 并发编程指南(11)原子操作 | 11.1、基本概念

C++中的原子操作提供了一种在多线程环境中安全地访问和修改共享数据的方式。通过使用std::atomic模板类和相关函数,我们可以实现各种基本和复合类型的原子操作。在实际编程中,原子操作被广泛应用于实现计数器、标志位、并发数据结构和算法等场景。通过合理地使用原子操作,我们可以有效地避免数据竞争和不一致性的问题,从而提高多线程程序的正确性和性能。

2024-03-17 19:24:35 987

原创 C/C++ 知识点:| 与 || 的区别

虽然和||在某些情况下可能看起来行为相似,但它们是两种不同的运算符,用于不同的目的。理解它们之间的区别对于编写正确的C++代码至关重要。按位或运算符用于位操作,而逻辑或运算符||用于逻辑判断。在使用这些运算符时,始终要注意上下文和预期的行为,以确保代码的正确性和效率。

2024-03-14 09:14:32 1119

C++多线程内存顺序实现原理图

C++多线程内存顺序实现原理图

2024-04-26

pre-commit在提交前对代码进行检查

pre-commit

2024-04-07

代码风格审查工具cpplint

cpplint

2024-04-07

Git 配置BCompare工具

Git 配置BCompare工具

2024-04-07

Qt编程基础 - 第六章-窗体 - 6.4、QWidget 自定义右键菜单

Qt编程基础 - 第六章-窗体 - 6.4、QWidget 自定义右键菜单

2023-08-22

空空如也

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

TA关注的人

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