Qt中parent()函數(shù)的具體使用
情景(需求)抽象:
A類對象是B類對象的成員變量。
B類對象是A類對象的父親。
A類對象中包含按鈕,點擊按鈕,調(diào)用B類的成員函數(shù)。
示例:
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調(diào)用其parent對象m的xxx()函數(shù)。
進一步拓展,當(dāng)有多重嵌套時,也可使用該方法。
QtWidgetsApplication1* w = (QtWidgetsApplication1*)(this->parent());
不斷獲取parent(),然后調(diào)用相關(guān)函數(shù)。
到此這篇關(guān)于Qt中parent()函數(shù)的具體使用的文章就介紹到這了,更多相關(guān)Qt parent()內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++實現(xiàn)神經(jīng)BP神經(jīng)網(wǎng)絡(luò)
這篇文章主要為大家詳細介紹了C++實現(xiàn)神經(jīng)BP神經(jīng)網(wǎng)絡(luò),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-05-05C++動態(tài)內(nèi)存分配(new/new[]和delete/delete[])詳解
這篇文章主要介紹了C++動態(tài)內(nèi)存分配(new/new[]和delete/delete[])詳解的相關(guān)資料,需要的朋友可以參考下2017-05-05VS2019調(diào)試C語言程序(監(jiān)視操作)的詳細步驟
在很多時候我們在寫程序的過程中會發(fā)現(xiàn)一些非編程錯誤的問題,這樣的問題很難直接分辨出來,但是我們可以用調(diào)試了一步一步的模擬程序運行的過程,來找出程序的錯誤,下面這篇文章主要給大家介紹了關(guān)于VS2019調(diào)試C語言程序(監(jiān)視操作)的詳細步驟,需要的朋友可以參考下2022-11-11