当前位置: 代码迷 >> QT开发 >> 请问:怎么触发以下事件
  详细解决方案

请问:怎么触发以下事件

热度:53   发布时间:2016-04-25 04:47:52.0
请教:如何触发以下事件。
1. 相互独立的widget类型的界面。A和B。

2. A和B,都有一个一按钮,并且单击按钮都弹出QMessageBox(YES, NO)


问题:
1,根据A弹出的QMessageBox的返回值(YES,NO),来显示出来B,并且关闭A!

2,根据B弹出的QMessageBox的返回值(YES,NO),来显示出来A,并且关闭B!

A和B根据,返回值都是YES来实现,循环显示。。。

请问,这样的事件,应该如何触发哪???

------解决方案--------------------
把YES和A关联起来应该就可以了
------解决方案--------------------
把A和B都放到一个类C中
A和B都定义一个signal用于告诉C显示另外一个 当返回YES时触发signal
------解决方案--------------------
根据不同的返回值发射不同的信号,然后把信号和相应的槽连接起来,就ok了。当然了,这里面的信号和槽函数都需要自己来定义。
------解决方案--------------------
如果没有父类去控制的话,用connect好像连接不起来了吧。

可以用全局变量去记录,例如
在main.cpp中,
定义全局变量
QWidget* hide_widget;
在创建的时候隐藏B,并用全局变量记录
widget_A* a=new widget_A;
a->show();
widget_B* b=new widget_B;
b->hide();
hide_widget=b;
在widget_a.cpp中,
extern QWidget* hide_widget;
然后在yes响应的地方:
hide_widget->show();
hide_widget=this;
close();
在widget_b.cpp中同以上操作。

这样应该可以实现,但个人感觉还是用一个父类控制比较好。

------解决方案--------------------
两个widget内各声明一个指向另外一个widget的指针,hide这个show另外一个。
  相关解决方案