qt c++-Qt中,到底如何实现主窗口和子窗口之间的通信?

问题描述

Qt中,到底如何实现主窗口和子窗口之间的通信?
RT,比如,当子窗口关闭时,重新打开主窗口。这个是如何通信的,希望能给上例子。
我知道是用信号和槽,可是两个窗口(类)之间的信号和槽我还不太会。网上也没找到具体的例子。希望大婶们能给个好点的直观的例子。

解决方案

主窗体类为A,子窗体类为B,在A中实例化B,其对象为b,关闭b,但不要释放b,调用b的public方法返回数据。仔细理解。

void A::buttonClick()
{
B b;
b.exec();
b.getData();
}

void A::buttonClick()
{
B *b = new B();
b->exec();
b->getData();
delete b;

}

应楼主要求再加上信号槽的实现方法,如下

主窗体类为A,子窗体类为B。类B中声明一个信号signalB,类A中声明一个槽函数slotA。
在A中实例化B,其对象为b, 在B类中需要的地方(如单击按钮)产生信号。
void B::buttonClick()
{
emit signalB;
}

void A::buttonClick()
{
B b;
connect(&b SIGNAL(signalB) this SLOT(slotA));
b.exec();
b.getData();
}

void A::slotA()
{
qDebug(""收到了B中的信号,可以做相应处理"");
}

解决方案二:
主窗体类为A,子窗体类为B,在A中实例化B,其对象为b,关闭b,但不要释放b,调用b的public方法返回数据。仔细理解。

void A::buttonClick()
{
B b;
b.exec();
b.getData();
}

void A::buttonClick()
{
B *b = new B();
b->exec();
b->getData();
delete b;
}

解决方案三:
父窗体调用子窗体可以在使用的时候直接设置进去
子窗体调用父窗体一个可以使用 发送消息给父窗体消息 2 可以通过过去父窗体的指针直接调用 其函数

时间: 2024-08-01 09:53:46

qt c++-Qt中,到底如何实现主窗口和子窗口之间的通信?的相关文章

操作-VC++ 主窗口与子窗口ListCtrl传值(有文字有整数,列表形式)

问题描述 VC++ 主窗口与子窗口ListCtrl传值(有文字有整数,列表形式) 在主窗口(父窗口)类中定义一个数据成员,用于实时更新ListCtrl的内容,当执行添加或者删除操作时,对应着更新这个数据成员.执行查找操作时,将主窗口的这个数据成员的指针传递给查找窗口(子窗口)对应的类中(在查找类中定义一个对应类型的数据成员指针),那么取数据时直接用的主窗口的实时数据. 现在遇到相同的问题,有些不太明白,恳请大虾贴出上述方法的具体代码,谢谢啦! 解决方案 使用委托与事件,如果是使子窗体中的内容·随

winform-主窗口 向子窗口传值,主窗口 textchange 子窗口输入框也变

问题描述 主窗口 向子窗口传值,主窗口 textchange 子窗口输入框也变 form1(主窗口)呼出form2(子窗口),然后将form1的值通过委托传给form2,利用委托怎么实现呢.我写了 但是 老是出来新窗口.因为没有币,所以不能悬赏.让我哭一下,新手求答案 解决方案 方法:信号槽 假设主窗口为A? : 子窗口 为 a : 给子窗口定义一个信号,当触发这个信号,使用信号槽连接来发送参数. 子窗口定义信号: signals: void toMainWindow(QString); 在子窗

Android中主线程与子线程之间相互通信教程

有时候,我们也可能碰到这样子的一种需求:需要主线程来向子线程发送消息,希望子线程来完成什么任务.如果这样子应该怎么做呢?这就是这篇文章将要讨论的内容. 一.HandlerThread类 主线程发送消息给子线程,通常思维逻辑就是:其实很简单,在主线程中实例化一个Handler,然后让他与子线程相关联(只要它与子线程的Looper相关联即可),这样子它处理的消息就是该子线程中的消息队列,而处理的逻辑都是在该子线程中执行的,不会占用主线程的时间.那么我们就来实现一下,看看这样子到底行得通还是行不通.新

C#中父窗口和子窗口之间实现控件互操作

父窗口|控件|子窗口 很多人都苦恼于如何在子窗体中操作主窗体上的控件,或者在主窗体中操作子窗体上的控件.相比较而言,后面稍微简单一些,只要在主窗体中创建子窗体的时候,保留所创建子窗体对象即可. 下面重点介绍前一种,目前常见的有两种方法,基本上大同小异: 第一种,在主窗体类中定义一个静态成员,来保存当前主窗体对象,例如: public static yourMainWindow pCurrentWin = null; 然后在主窗体构造函数中,给静态成员初始化,如下: pCurrentWin = t

Qt 子窗口父窗口切换,窗口间传值

 本人代码 代码下载:http://download.csdn.net/detail/u013378306/9621322 效果:实现 父窗口 打开子窗口,关闭子窗口,子窗口向父窗口传值 win_win.pro 文件 #------------------------------------------------- # # Project created by QtCreator 2016-09-04T13:33:26 # #----------------------------------

matlab-MATLAB子窗口和主窗口互相调用的问题

问题描述 MATLAB子窗口和主窗口互相调用的问题 MATLAB主窗口打开一个子窗口,子窗口功能执行正常,例如:对主窗口图形进行power变换,显示在主窗口的某一坐标轴picdst.子窗口由控件滑条组成.但是只要一关闭子窗口,再次从主窗口打开同一子窗口时,提示无法获取到主窗口句柄的目标坐标轴picdst,也就是power次变换后的图片无法显示到主窗口的坐标轴picdst. 解决方案 我好久没玩matlab了,但是我记得如果在子窗体中调用主窗体的句柄或其他变量的话,那个句柄或变量应该定义globa

请教:如何在子窗口中使用父窗口中的listview控件?!

问题描述 有一个父窗口和子窗口.现在想在子窗口中使用父窗口中的listview,请问该如何做呢? 解决方案 解决方案二:写个管理类,对父窗口的界面管理.字窗口能访问这个管理类就行了!解决方案三:ListViewlist=(ListView)Application.OpenForms["Form1"].Controls["listView1"];if(list!=null)...... 解决方案四:在show子窗口的时候,将ListView传递给它

Flex打开新窗口将主窗口数据传给子窗口然后返回_Flex

先说下我的需求: 主窗口打开子窗口,主窗口有数据传给打开的子窗口, 子窗口关闭时直接返回主窗口. ----------------------------------------------------------------------------------------------- 一开始我的实现方法是: 主窗口打开子窗口后,马上this.visible=false,即隐藏主窗口. 子窗口关闭前执行this.parent.visible=true,即显示主窗口,然后PopUpManager

qtabwidget用法-Qt中TabWidget怎么在代码里面实现tab页之间的切换,并且分别访问到每个页面的控件?

问题描述 Qt中TabWidget怎么在代码里面实现tab页之间的切换,并且分别访问到每个页面的控件? Qt中TabWidget怎么在代码里面实现tab页之间的切换,并且分别访问到每个页面的控件? 解决方案 实现切换可以用控件的setCurrentIndex方法 ui->tabWidget_update_time->setCurrentIndex(1); //这个是切换到第二页,因为index是从0开始的 至于访问每个页面的控件,如果楼主的控件是代码生成的话(假设是new出来的),那直接用对应