2 u012081284 u012081284 于 2013.11.24 18:14 提问

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

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

3个回答

mevip
mevip   2013.12.04 13:20
已采纳

主窗体类为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中的信号,可以做相应处理");
}

mevip
mevip   2013.11.25 15:51

主窗体类为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;
}

u012081284
u012081284 也是一种不错的思路,不过还是想知道信号和槽怎么实现这个。应该能实现吧。
大约 4 年之前 回复
u011782964
u011782964   2013.11.25 17:51

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!