Qt 中 QObjectCleanupHandler 使用总结

2023-11-06

背景

QObjectCleanupHandler 类用于清理 QObject 类对象,通常可以作为资源清理器使用。

监视对象生命周期

①.概述

QObjectCleanupHandler 中管理的对象被 delete 后会自动从其管理到的象列表中删除,可以用来监视对象的生命周期。

②.代码示例

QtClassDemo * demo = new QtClassDemo(nullptr);
QObjectCleanupHandler  * demoWatch = new QObjectCleanupHandler;

connect(ui.pushButton, &QPushButton::clicked, [demo, demoWatch]() {  
    demoWatch->add(demo);    
});

connect(ui.pushButton_2, &QPushButton::clicked, [demo, demoWatch]() {
    delete demo;
});

connect(ui.pushButton_3, &QPushButton::clicked, [demo, demoWatch]() {
    if (demoWatch->isEmpty())
    {
      qDebug() << " demo 已被删除";
    }
});

在这里插入图片描述

自动清理对象

①.概述

QObjectCleanupHandler 对象在析构时会自动 delete 其所管理到对象,可用于动态对象的自动删除。

②.代码示例

connect(ui.pushButton, &QPushButton::clicked, [&]() {
  
    QObjectCleanupHandler objectHandler;
    objectHandler.add(new QtClassDemo("demo1"));
    objectHandler.add(new QtClassDemo("demo2"));
    objectHandler.add(new QtClassDemo("demo3"));
    objectHandler.add(new QtClassDemo("demo4"));  
});

在这里插入图片描述

批量清理动态对象

①.概述

QObjectCleanupHandler 的 clear 方法会 delete 其所管理的所有对象,可用于动态对象的批量删除。

②.代码示例

connect(ui.pushButton, &QPushButton::clicked, [&]() {
  
  QObjectCleanupHandler * objectHandler = new QObjectCleanupHandler;
  objectHandler->add(new QtClassDemo("demo1"));
  objectHandler->add(new QtClassDemo("demo2"));
  objectHandler->add(new QtClassDemo("demo3"));
  objectHandler->add(new QtClassDemo("demo4"));

  objectHandler->clear();  
});

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt 中 QObjectCleanupHandler 使用总结 的相关文章

  • QFileDialog::getOpenFileName 调试时崩溃,显然是由项目名称引起的?

    我遇到了一个让我非常困惑的问题 我在 Windows 7 上使用 Qt Creator 3 1 2 和 Qt 5 3 使用 MSVC 10 0 编译器和 Windows 8 1 调试工具中的 CDB 不确定我是否应该寻找特定于 Window
  • 使用 QWT 构建时出错

    我收到一个错误 undefined reference to QwtPlot QwtPlot QWidget 当我尝试构建我的项目时 即使设置中一切看起来都很好 在我的 CmakeLists txt 中我有 include director
  • QThread - 使用槽 quit() 退出线程

    我想在线程完成运行时通知对象 但是 我无法让线程正确退出 我有以下代码 处理器 cpp thread new QThread tw new ThreadWorker connect tw SIGNAL updateStatus QStrin
  • QML MouseArea 将事件传播到按钮

    我正在开发一个应用程序 其菜单类似于 Android 版 Gmail 收件箱应用程序菜单 基本上 当您按下按钮打开菜单时 它就会滑入视图 用户可以将其滑开或按菜单上的按钮 对于滑动我使用了代码SwipeArea from kovrov ht
  • 一个具有完全透明背景的qt小部件

    我需要创建一个 qt 小部件 它将充当其他一些小部件的父级 并对它们进行排序 现在的问题是如何使其背景完全透明 我想这样做 struct Imp Imp QWidget parent thisWidget new QWidget paren
  • QWebEngineView 在 load() 或 page() 方法上崩溃

    我正在致力于将 Qt 5 5 QWebView 项目移植到 Qt 5 6 测试版 QWebEngine 我已经阅读了移植指南here https wiki qt io Porting from QtWebKit to QtWebEngine
  • 使用 CMake 时出现 Qt moc 错误

    我正在尝试编写一个 OpenCV 应用程序 使用 Qt 创建 GUI 并使用 CMake 生成 makefile 我遇到的问题是 当我尝试执行make命令 我收到错误 该文件是使用 5 2 1 中的 moc 生成的 它不能与此版本的 Qt
  • 如何在 Qt4 OpenGL 应用程序中启用 HiDPI (Retina) 支持?

    我正在使用带有 QGraphicsView 的 QGraphicsScene 如中所述这个文件 https doc qt io archives qq qq26 openglcanvas html 我打算最终将 Qt 小部件覆盖在我的 Op
  • QDateTime::fromstring( __DATE__, "MMM d yyyy") 返回无效

    解析MSVC 预定义 DATE 也许结合 TIME 宏与 QDateTime fromstring 不返回任何内容 无效的 QDateTime 对象 为什么 From http msdn microsoft com en us librar
  • Qt,颜色选择器对话框?

    Qt 是否有如下所示的颜色选择器对话框 它还需要有一个 OnColorChanged 信号 当选定的颜色发生变化时会调用该信号 我想在他们改变颜色时提供实时预览 这就是原因 使用谷歌我只能找到这个 它是一个圆边上的三角形 我个人认为它看起来
  • Qt - 如何在保留选中状态的同时禁用 QCheckBox?

    我有一个带有两个复选框的对话框 我们称它们为 A 和 B 当未选中 A 时 B 应该能够根据用户的需要进行切换 当 A 被选中时 B 不应该能够被切换 现在 我的对话框构造函数中有以下内容 connect ui gt A SIGNAL to
  • 更改 QGraphicsView 中的光标

    我正在尝试更改 a 的光标QGraphicsView而ScrollHandDrag已开启 但似乎不起作用 如果禁用 我可以更改光标ScrollHandDrag但不是在它处于活动状态时 我不知道我可能做错了什么 下面是重现该问题的代码的一部分
  • 交叉引用标头中出现“未终止条件指令”错误

    有两个类在其标头中彼此相关 绘图标记 ifndef PLOTMARKER H define PLOTMARKER H include
  • 如何将 qmake 转换为 cmake?

    我有一个 pro我的项目上的文件 但现在我想将其移植到CMakeLists txt文件 我怎样才能做到这一点 QT core QT gui CONFIG c 11 TARGET test CONFIG console CONFIG app
  • 在 Qt 5.12 的 OpenCV dll 上找不到入口点

    TLDR 将 OpenCV 与 QT MingW 链接会使应用程序在调试时崩溃 但不会在发布时崩溃 我正在尝试在基于 Qt 的大型多操作系统项目中使用 OpenCV 我已经轻松地为 Mac 和 Linux 构建了 OpenCV 但在 Win
  • 防止 QGraphicsItem 移出 QGraphicsScene

    我有一个场景 其固定尺寸从 0 0 到 481 270 scene gt setSceneRect 0 0 481 270 在里面 我有一个习惯GraphicsItem多亏了旗帜我可以移动它ItemisMovable 但我希望它留在场景中
  • Qt:如何制作二维插值颜色字段?

    我是 C 的初学者 尤其是与图形相关的 我想为我的图形视图制作一个动画背景 如下所示 梯度场气流 http www engineering leeds ac uk cfd research images untitled JPG 该图片表现
  • Qt QPushButton 样式表悬停

    我有以下按钮样式表 QPushButton hover background qlineargradient x1 0 y1 0 x2 0 y2 1 stop 0 0 ffd9aa stop 0 5 ffbb6e stop 0 55 fea
  • Qt: 主窗口->show();不显示主窗口

    在下面的代码中 我创建一个窗口 调用window show 但窗口直到之后才显示window gt iterateSolution 叫做 几乎就好像 app exec 是显示窗口的函数 我对 Qt 很陌生 所以我不知道发生了什么 inclu
  • 如何将 QSerialPort 模块添加到 CMake 中?

    我想将 QSerialPort 模块添加到 CMake 中 根据我的理解 我需要将QT 串口添加到 pro中 我只想使用 CMake 所以我尝试编译简单的 CMake 文件 但有错误 QtCore 正在工作 qDebug 可以毫无问题地显示

随机推荐

  • Android 开发 改变某个Activity的系统字号

    Android系统的字号可以在设置里改变 常常会影响布局效果 如果是个别控件不想被改变大小 使用 dp 而非 sp 作为字体单位即可 转载请注明出处 http blog csdn net u013258802 article details
  • JDBC连接MySQL数据库及自定义JDBCUtils

    JDBC连接MySQL数据库及自定义JDBCUtils 前言 一 JDBC连接数据库 1 引入依赖 2 连接数据库 二 自定义JDBCUtils 1 JDBCUtils 2 BeanJDBCUtils 3 使用自定义JDBC类操作数据库 前
  • Docker练习

  • 数据挖掘(二):特征工程

    数据挖掘 二 特征工程 1 删除无关变量 2 数据类型分析 3 缺失值处理 4 变量筛选 5 模型训练和评估 导入包 import pandas as pd import numpy as np from scipy import stat
  • Elasticsearch 快速开始

    Elasticsearch 是一个分布式的 RESTful 风格的搜索和数据分析引擎 查询 Elasticsearch 允许执行和合并多种类型的搜索 结构化 非结构化 地理位置 度量指标 搜索方式随心而变 分析 找到与查询最匹配的十个文档是
  • C++类型支持之std::is_function

    std is function C 11 用于检查类型是否为函数 注意此处函数类型不包括std function lambda 有重载operator 的类 可能的实现 初等模板 template
  • JDBC(一)

    JDBC 什么是JDBC Java语言访问数据库的一种规范 是一套API JDBC Java Database Connectivity API 即Java数据库编程接口 是一组标准的Java语言中的接口和类 使用这些接口和类 Java客户
  • Wind River Workbench 3.x VxWorks项目类型

    今天学习了解了Wind River Workbench 3 x VxWorks项目类型及这些类型之间的关系 7种VxWorks项目类型如下图所示 如上图 Wind River Workbench 3 3 相关VxWorks项目类型有7种 分
  • c++ fibonacci

    代码示例 c 示例 include
  • Python虚拟环境工具

    以ubuntu 20 04环境为例 介绍Python虚拟环境工具的使用 一 venv Python 从3 3 版本开始 自带了一个虚拟环境 venv 支持创建独立的虚拟开发环境 用于管理所需包或模块的特定版本 1 工具安装 sudo apt
  • 【Ubuntu 18.04】安装terminator 并在右键菜单中添加open in termintor

    安装terminator sudo apt install terminator 一般会自动把其设置为默认终端 在右键菜单中添加open in terminator 这废了很大力气 安装Nautilus actions Nautilus a
  • 逆向效率提升工具与方法汇总(持续更新...)

    欢迎大家提供高效方法与工具 工具 油猴插件 SwitchyOmega Reres Fiddler插件编程猫 奇淫技巧 selenium Options常用参数 防检测 将浏览器navigator webdriver重置为False stea
  • STM32F103使用TIM3定时器输出两路PWM控制直流电机

    1 首先打开PWM输出实验例程 这里采用正点原子精英版例程 打开led c 对相关端口进行修改 void LED Init void GPIO InitTypeDef GPIO InitStructure RCC APB2PeriphClo
  • openlayers绘制范围圆

    drawCircleByStation参数是坐标 lng lat 绘制范围圆taylor drawCircleOld centerPosition radius 2000 callback color fff text let featur
  • springboot+顺利达驾校预约管理 毕业设计-附源码191748

    Springboot顺利达驾校预约管理系统 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化 电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用 信息时代的到来已成为不可阻挡的时尚潮流 人类发展的历史正进入一个新时
  • 【华为OD统一考试B卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • 如何解决vue项目不能自动打开浏览器

    运行项目npm run dev 命令行中已经提示我们运行成功了 等了半天浏览器也没有自动打开 没办法我们只能自己手动输入了 那么我们如何在npm run dev之后自动打开浏览器呢 首先找到config index js文件 在文件modu
  • 扩栈

    int size 256 lt lt 20 256MB char p char malloc size size asm movl 0 esp n r p
  • linux下备份目录文件及目录

    一 关于Linux备份文件和应用的几个命令 tar和cp 在工作中 经常来备份文件和系统应用 常用到的主要是tar和cp命令 分别介绍如下 一 tar命令 这个现在经常使用用来打包 tar包指的是档案文件 tar cvf filename
  • Qt 中 QObjectCleanupHandler 使用总结

    背景 QObjectCleanupHandler 类用于清理 QObject 类对象 通常可以作为资源清理器使用 监视对象生命周期 概述 QObjectCleanupHandler 中管理的对象被 delete 后会自动从其管理到的象列表中