我创建了一个处理close事件的Qt表单。在我的另一个类(Test类)中,我创建了这个表单的实例,并希望处理“Test”类中表单的close事件。
我尝试在“测试”类中使用以下代码,但似乎不起作用。
connect(instanceWidget, SIGNAL(closeEvent(QCloseEvent *)), this, SLOT(handleFormCloseEvent(QCloseEvent *)));
注意instanceWidget是来自测试类的Qt表单的实例。
答案 0 :(得分:0)
事件处理程序方法(如closeEvent
)不是信号,因此您无法连接它们。
事件处理如下:
事件循环从其队列中获取给定对象的事件。
它通过调用object->event(...)
来通知对象。
此方法在QWidget
中重新实现,并调用相关的特定事件处理程序。在这种情况下,它会调用closeEvent()
。
不涉及信号/插槽。
如果要处理其他对象的事件(QWidget
是QObject
),则必须install an event filter on them。您的事件过滤器将对您关注的事件做出反应,同时传递其他事件。
答案 1 :(得分:0)
我的解决方案 -
处理表单/ UI类中的OnClose事件并注入以下代码 -
发出OnClose(); 事件 - >接受;
添加信号OnClose();
在实例化(测试类)中,为OnClose创建一个信号和插槽,并提供自定义功能。
- 关闭表单,调用UI的close事件处理程序,它发出onclose信号并由测试类处理。之后它返回到表单类并关闭表单。