QT6之qDeleteAll

2024-04-22 12:44
文章标签 qt6 qdeleteall

本文主要是介绍QT6之qDeleteAll,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、qDeleteAll概述

它是 Qt 提供的一个模板函数,它用于一次性删除容器中的所有对象。这个函数非常方便,尤其是在处理指针容器时,可以简化代码并减少出错的可能性。该函数适用于任何存储指向动态分配对象的指针的 STL 容器(如 QList, QVector, QMap, QSet 等)。

2、qDeleteAll用途 

qDeleteAll 的用途:

  • 自动化内存管理:一次性清除容器中所有对象,避免遗漏和重复代码。
  • 减少泄漏风险:自动和安全地删除指针,避免内存泄漏。
  • 代码简洁:用一行代码替代可能的循环删除操作。

3、qDeleteAll示例

假设你有一个 QList 容器,其中存储了一些动态分配的对象的指针,你想在某个时刻删除这些对象并清空列表:

备注:调用clear方法能置空,但并不能释放其内存。qDeleteAll可以释放容器元素内存,但没有对容器的置空操作,也就是size没变。所以qDeleteAll之后必须加上clear方法

#include <QCoreApplication>
#include <QList>
#include <QDebug>class Widget {
public:Widget(const QString& name) : name(name) {}~Widget() {qDebug() << "Destroying widget:" << name;}QString name;
};int main(int argc, char *argv[]) {QCoreApplication app(argc, argv);QList<Widget*> widgets;widgets.append(new Widget("Widget 1"));widgets.append(new Widget("Widget 2"));widgets.append(new Widget("Widget 3"));// 使用qDeleteAll来删除所有Widget对象qDeleteAll(widgets);widgets.clear();  // 清空列表,确保所有指针都被移除return app.exec();
}

这篇关于QT6之qDeleteAll的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/925817

相关文章

Qt6+VTK9环境配置

Qt6+VTK9环境配置 说明1 Qt6安装2 VTK源码编译2.1 源码下载2.2 工程编译2.3 设置环境变量 3 Qt+VTK项目构建3.1 使用qmake管理项目3.2 使用cmake管理项目 参考资料 说明 由于想做一点新的东西,需要去探索一些工具,对于VTK之前没有了解过,在进行环境配置时,参考了其他一些博客,由于版本的问题,采了不少坑,所以,在这里做个记录整理。我所

qt6 socket 不使用代理 socket error: The proxy type is invalid for this operation

qt 5.8之后,socket默认使用代理 参考 https://www.cnblogs.com/cppskill/p/11730452.html#:~:text=%E5%9C%A8%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0%E9%87%8C%E5%AE%9A%E4%B9%89,Proxy%29%3B%E3%80%82 #include <QNetworkProx

Qt6中使用qcustomplot时报错:file too big

错误描述:在qt6中使用qcustomplot时报错提示:file too big 提示是.cpp文件太大导致的,需要在.pro文件中再增加一行 QMAKE_CXXFLAGS += "-Wa,-mbig-obj"修改编译器的设置

QtCreator错误:Qt没有被正确安装,请运行make install(适用Qt4、Qt5、Qt6)

一、问题环境 (1)Windows 10企业版,64位 (2)Visual Studio 2019 (3)Qt5.12.12 x64版本、Qt4.8.6 x64版本(自己编译) (4)Qt Creator 12.0.1 二、问题描述:         自己在编译完整Qt5.12.12源码后,想要在Qt Creator12.0.1中使用自己编译的Qt5.12.12_x64版本,进行工作;

QT6 setCentralWidget 和 takeCentralWidget

qt6 中,初始化界面完成之后,可以使用setCentralWidget 设置当前的widget为中心页面 如果你存在多个widget想要多个切换 如果存在widget1 和 widget2 在初始化的时候 setCentralWidget(widget1)触发操作切换到 widget2 如果没有先takeCentralWidget 直接setCentralWidget(widget2)

一文看明白QML输入框的动画制作Python PySide6 Qt6 QML LineEdit 输入框

1. 前言 本代码为扫地僧-smile原创, 废话不多说, 直接看效果图由于录制的这个GIF图掉帧严重, 实际动画效果非常细腻 2.看代码 控件模块代码如下 SmileLineEdit.qml import QtQuickimport QtQuick.Controls/* __author__: 扫地僧-smile */Rectangle {// 属性property int ti

QT6 学生管理系统以及登录(QSQLITE数据库)

一、准备工具以及环境 本文采用的是QT Creator6.5.3版本,代码基于C++语言,文中所用到的数据库是QSQLITE库。 因为做的是一个简单的学生管理系统,所以只是做到了简单的对数据库进行增删改查等操作,以及一个简单的登录界面。 二、UI界面以及结果展示 1、登录UI 所用到的控件分别是RadioButton、PushButton、Label、LineEdit等。 2、登录

用QT6、QML、FFMPEG写一个有快进功能的影音播放程序

程序如图: 开发环境在ubuntu下,如果改windows下,也就改一下cmakelists.txt。windows下如何配置ffmpeg以前的文章有写,不再重复。 源程序如下: GitHub - wangz1155/ffmpegAudioThread: 用qt6,qml,ffmpeg,写一个有快进功能的影音播放GitHub - wangz1155/ffmpegAudioThread:

Qt6编写CMakeLists时find_package的写法

引言: 看下面两个不同的find_package: find_package(Qt6 COMPONENTS Widgets REQUIRED)   find_package(Qt6 REQUIRED Widgets)   区别: 以上的find_package命令是在使用 CMake 构建系统时用于查找和加载 Qt6 库的两个不同的命令。这两个命令在语法上和作用上有一些细微的

[Python]用Qt6和Pillow实现截图小工具

本文章主要讲述的内容是,使用python语言借助PyQt6和Pillow库进行简单截图工具的开发,含义一个简单的范围裁剪和软件界面。         主要解决的问题是,在高DPI显示屏下,坐标点的偏差导致QWidget显示图片不全、剪裁范围偏差问题。         适合有一点点基础的朋友来看,使用的工具有:Qt Designer、PyUIC、Qt6、Pillow 截图与剪裁