QTimer 指针类型和引用类型使用的区别

QTimer *timer1 = new QTimer(this); //指针类型

QTimer timer2; //引用类型

这两种用法之间的主要区别在于对象的生命周期和存储位置。

1、动态分配内存的对象*timer1 :

QTimer在创建为 *timer1 指针类型时,一定要指定this为父类,即父类为当前窗体,否则在关闭或释放当前窗体后,QTimer还在运行,会引发程序异常。

这种方式创建了一个 QTimer 对象,并通过 new 运算符动态分配了内存。*timer1 这个对象的生命周期在你显式删除它之前,或者在使用 this 作为父对象并且在this 对象被销毁时才会结束。通常,在这种情况下,你需要在适当的时候(比如对象不再需要时或者类的析构函数中)使用delete 来释放这个对象,以避免内存泄漏。

QTimer *timer1 = new QTimer(this);

connect(timer1,&QTimer::timeout,[=](){

        qDebug()<<"timer1"<<ncount++;

});

timer1->start(1000);

  • 这是一个指向 QTimer 对象的指针。
  • 使用动态内存分配,需要在堆上创建 QTimer 对象。
  • 开发人员负责手动分配内存和释放内存,以避免内存泄漏。使用 new QTimer(parent)  delete timer1 

2、栈上的对象timer2:

QTimer在创建为 timer2 引用对象类型时,不需要指定父类,会自动销毁。

这种方式创建的 QTimer 对象是一个栈上的局部变量,其生命周期受限于定义它的作用域。当超出该对象所在作用域时(通常是函数结束时),对象会被自动销毁。因此,在这种情况下,你不需要手动释放内存或管理对象的生命周期。

但此种方式需要将 QTimer timer2;放在*.h头文件中,并且在头文件中引用 #include  <QTimer>,否则程序编译及运行不报错,但计时器不能执行。

在头文件中引用 #include <QTimer>

在头文件中声名 QTimer timer2;

在代码文件cpp中写代码:

connect(&timer2,&QTimer::timeout,[=](){

        qDebug()<<"timer2"<<ncount++;

});

timer2.start(1000);

  • 这是一个 QTimer 对象,其生命周期由它所属的作用域管理。
  • 对象在栈上创建,当它超出了其作用域时,会自动被销毁。
  • 不需要手动释放内存。

相关推荐

  1. QTimer 指针类型引用类型使用区别

    2024-02-01 18:04:02       34 阅读
  2. 基础数据类型引用数据类型指针区别

    2024-02-01 18:04:02       14 阅读
  3. C#中类型引用类型区别

    2024-02-01 18:04:02       13 阅读
  4. c#基础-引用类型类型区别

    2024-02-01 18:04:02       19 阅读
  5. c# 值类型引用类型区别

    2024-02-01 18:04:02       14 阅读
  6. 引用指针区别

    2024-02-01 18:04:02       10 阅读
  7. C/C++ 引用指针区别使用场景

    2024-02-01 18:04:02       9 阅读
  8. 【C/C++】基本数据类型—数组、指针引用

    2024-02-01 18:04:02       25 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-01 18:04:02       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-01 18:04:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-01 18:04:02       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-01 18:04:02       20 阅读

热门阅读

  1. 2024 高级前端面试题之 Node 「精选篇」

    2024-02-01 18:04:02       37 阅读
  2. c++if else 解释

    2024-02-01 18:04:02       31 阅读
  3. 基于低代码的管理系统模板库的设计与实现

    2024-02-01 18:04:02       38 阅读
  4. Python 构造方法

    2024-02-01 18:04:02       27 阅读
  5. 计算机中的缓存与内存

    2024-02-01 18:04:02       35 阅读