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