• Qt中QObject中的parent参数


    今天写了一个小程序,验证了带参的构造函数中参数parent的作用。

    在MainWindow中声明一个QDialog类型的指针,在MainWindow中对它进行初始化。我采用了两种初始化方式,一种是带参的构造函数,一种是不带参的构造函数。如下:

    /*mainwindow.h*/
    ...
    QDialog *dialog;
    ...
    
    
    /*mainwindow.cpp*/
    //第一种方式,用不带参的构造进行初始化
    dialog = new QDialog;
    //第二种方式,用带参的构造函数初始化
    dialog = new QDialog(this);
    dialog->show();

    两种方式的显示情况是不同的,第一种方式在任务栏中会有该对话框的位置,也就是说虽然是mainwindow中的成员变量,但是在显示时是和mainwindow平级的。关闭mainwindow,dialog不会被关闭。第二种方式在任务栏中只有mainwindow的位置,不会出现dialog的位置。并且关闭mainwindow,dialog对话框会自动关闭。

    这是parent参数导致的,在Qt中parent参数就是指定该组件的父组件,例如dialog初始化时没有指定其父组件,那么它就是一个顶层容器,所以任务栏就会给其留个位置。使用parent参数指明组件的父组件有个好处,就是当父组件被delete时,Qt可以保证所有子组件也就是将parent指针指向当前组件的所有组件都会被delete掉。Qt可以通过遍历parent属性来防止内存泄漏。

  • 相关阅读:
    面试题 16:反转链表
    Makefile学习之路6————通过函数增强功能
    Makefile学习之路5————变量
    Makefile学习之路3————规则的运行
    LED灯C语言的点亮方式
    LED灯汇编机器码的点亮方式
    Linux的进阶命令
    入门命令2
    shell命令解析器功能说明及入门命令1
    C++基础 — C++中的变量和三目运算符
  • 原文地址:https://www.cnblogs.com/tgycoder/p/5518800.html
Copyright © 2020-2023  润新知