问题描述
- 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 可以通过过去父窗体的指针直接调用 其函数