Qt中parent()函数的具体使用

 更新时间:2024年03月07日 12:01:48   作者:lpl还在学习的路上  
你会发现几乎所有的Qt类的构造函数都会有一个parent参数,本文主要介绍了Qt中parent()函数的具体使用,具有一定的参考价值,感兴趣的可以了解一下

情景(需求)抽象:

A类对象是B类对象的成员变量。

B类对象是A类对象的父亲。

A类对象中包含按钮,点击按钮,调用B类的成员函数。

示例:

A类:

#pragma once

#include <QWidget>
#include "ui_QtWidgetsClass.h"

class QtWidgetsClass : public QWidget
{
	Q_OBJECT

public:
	QtWidgetsClass(QWidget *parent = nullptr);
	~QtWidgetsClass();
	void yyy();
private:
	Ui::QtWidgetsClassClass ui;
};
#include "QtWidgetsClass.h"
#include "QtWidgetsApplication1.h"
QtWidgetsClass::QtWidgetsClass(QWidget *parent)
	: QWidget(parent)
{
	ui.setupUi(this);
	connect(ui.pushButton, &QPushButton::clicked, this, &QtWidgetsClass::yyy);
}

QtWidgetsClass::~QtWidgetsClass()
{
}
void QtWidgetsClass::yyy()
{
	QtWidgetsApplication1* w = (QtWidgetsApplication1*)(this->parent());
	w->xxx();
}

B类: 

#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_QtWidgetsApplication1.h"

class QtWidgetsClass;
class QtWidgetsApplication1 : public QMainWindow
{
    Q_OBJECT

public:
    QtWidgetsApplication1(QWidget *parent = nullptr);
    ~QtWidgetsApplication1();
    void xxx();
private:
    Ui::QtWidgetsApplication1Class ui;
    QtWidgetsClass* c;
};
#include "QtWidgetsApplication1.h"
#include "QtWidgetsClass.h"
#include <qdebug.h>
QtWidgetsApplication1::QtWidgetsApplication1(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
    c = new QtWidgetsClass(this);
}

QtWidgetsApplication1::~QtWidgetsApplication1()
{
}
void QtWidgetsApplication1::xxx()
{
    qDebug() << "QtWidgetsApplication1::xxx()";
}

main.cpp: 

#include "QtWidgetsApplication1.h"
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QtWidgetsApplication1 m;
    m.show();
    return a.exec();
}

效果:点击按钮,对象c调用其parent对象m的xxx()函数。

进一步拓展,当有多重嵌套时,也可使用该方法。

QtWidgetsApplication1* w = (QtWidgetsApplication1*)(this->parent());

不断获取parent(),然后调用相关函数。 

到此这篇关于Qt中parent()函数的具体使用的文章就介绍到这了,更多相关Qt parent()内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++实现正态随机分布的方法

    C++实现正态随机分布的方法

    本篇介绍了,使用c++实现正态随机分布的实现方法。需要的朋友参考下
    2013-05-05
  • C++实现神经BP神经网络

    C++实现神经BP神经网络

    这篇文章主要为大家详细介绍了C++实现神经BP神经网络,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • Opencv LBPH人脸识别算法详解

    Opencv LBPH人脸识别算法详解

    这篇文章主要为大家详细介绍了Opencv LBPH人脸识别算法的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • 递归形式与非递归形式的斐波那契数列的用法分析

    递归形式与非递归形式的斐波那契数列的用法分析

    本篇文章是对递归形式与非递归形式的斐波那契数列的用法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • 深入了解C++中常用的三个智能指针

    深入了解C++中常用的三个智能指针

    C++是一门强大的编程语言,但是在内存管理方面却存在着一些问题。手动管理内存不仅费时费力,而且容易出错。因此,C++中引入了智能指针这一概念,以更好地管理内存,下面就来详细讲讲C++中常用的三个智能指针吧
    2023-05-05
  • C++填坑的重写,重载和隐藏的详解

    C++填坑的重写,重载和隐藏的详解

    这篇文章主要介绍了C++中重载、重写(覆盖)和隐藏的区别,是C++面向对象程序设计非常重要的概念,需要的朋友可以参考下,希望能够给你带来帮助
    2021-09-09
  • C语言打印菱形实例详解

    C语言打印菱形实例详解

    这篇文章主要给大家介绍了关于C语言如何打印菱形的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 用c语言实现和平精英的完整代码

    用c语言实现和平精英的完整代码

    这篇文章主要介绍了用c语言实现和平精英的完整代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • C++动态内存分配(new/new[]和delete/delete[])详解

    C++动态内存分配(new/new[]和delete/delete[])详解

    这篇文章主要介绍了C++动态内存分配(new/new[]和delete/delete[])详解的相关资料,需要的朋友可以参考下
    2017-05-05
  • VS2019调试C语言程序(监视操作)的详细步骤

    VS2019调试C语言程序(监视操作)的详细步骤

    在很多时候我们在写程序的过程中会发现一些非编程错误的问题,这样的问题很难直接分辨出来,但是我们可以用调试了一步一步的模拟程序运行的过程,来找出程序的错误,下面这篇文章主要给大家介绍了关于VS2019调试C语言程序(监视操作)的详细步骤,需要的朋友可以参考下
    2022-11-11

最新评论