来自实例类的CloseEvent Qt

时间:2013-09-26 19:40:08

标签: qt qt4

我创建了一个处理close事件的Qt表单。在我的另一个类(Test类)中,我创建了这个表单的实例,并希望处理“Test”类中​​表单的close事件。

我尝试在“测试”类中使用以下代码,但似乎不起作用。

connect(instanceWidget, SIGNAL(closeEvent(QCloseEvent *)), this, SLOT(handleFormCloseEvent(QCloseEvent *)));

注意instanceWidget是来自测试类的Qt表单的实例。

2 个答案:

答案 0 :(得分:0)

事件处理程序方法(如closeEvent)不是信号,因此您无法连接它们。

事件处理如下:

  1. 事件循环从其队列中获取给定对象的事件。

  2. 它通过调用object->event(...)来通知对象。

  3. 此方法在QWidget中重新实现,并调用相关的特定事件处理程序。在这种情况下,它会调用closeEvent()

  4. 不涉及信号/插槽。

    如果要处理其他对象的事件(QWidgetQObject),则必须install an event filter on them。您的事件过滤器将对您关注的事件做出反应,同时传递其他事件。

答案 1 :(得分:0)

我的解决方案 -

处理表单/ UI类中的OnClose事件并注入以下代码 -

发出OnClose(); 事件 - >接受;

添加信号OnClose();

在实例化(测试类)中,为OnClose创建一个信号和插槽,并提供自定义功能。

- 关闭表单,调用UI的close事件处理程序,它发出onclose信号并由测试类处理。之后它返回到表单类并关闭表单。