主窗口与子窗口之间的传值

主窗口传信息给子窗口

方法一:委托

主窗口与子窗口创建委托关系,即是把主窗口的地址给到子窗口,这样子窗口就可以通过地址访问到主窗口的公有成员函数,从而得到私有成员的值。示例步骤如下:(示例中MainWindow类为主窗口,pretreat类为子窗口)

  1. 子窗口
    pretreat.h
#include "MainWindow.h"

 class pretreat : public QDialog
{
public:
    explicit pretreat(MainWindow *AA,QWidget *parent = nullptr);
private:
    Ui::pretreat *pui;
	MainWindow *A;   				//委托
}

pretreat.cpp

pretreat::pretreat(MainWindow *AA, QWidget *parent) :
	QDialog(parent), A(AA),
	pui(new Ui::pretreat)
{
	pui->setupUi(this);
	qDebug() << A->getNumber();			//得到Number的值:11
}

2.主窗口
MainWindow.cpp

#include "pretreat.h"

void MainWindow::PrebtnClicked()
{
pretreat prepic(this);     			//把当前指针传给prepic中的私有成员A,此时A就是主窗口的地址
prepic.show();							//显示对话框prepic

if (prepic.exec() == QDialog::Accepted)  			//等待,直到prepic释放退出,和被主窗口接收
			return;
}

MainWindow.h

class MainWindow : public QMainWindow
{
	Q_OBJECT

public:
	int getNumber const {return Number;}
private:
	int Number = 11;
}

子窗口传信息给主窗口或者兄弟窗口

方法一:自定义信号

1、子窗口

//头文件中声明自定义信号m_TeachRectFlagChanged
class ImageView : public QWidget
{
signals:
	void m_TeachRectFlagChanged(bool);			//此处传递的是bool型信息,也可其他任意类型信息
}

//在某函数发送信号处写上这样一句话:
emit m_TeachRectFlagChanged(true);

2、接收信号者

//在头文件中声明槽函数和ImageView 对象:
protected slots:
	void TeachFlagChange(bool);
private:
	ImageView* currentView;
	
//在该类的构造函数中连接信号与槽:
connect(currentView, SIGNAL(m_TeachRectFlagChanged(bool)), this, SLOT(TeachFlagChange(bool)));
//则在槽函数TeachFlagChange中即可收到currentView发送信号m_TeachRectFlagChanged的值
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值