0

我创建了一个处理关闭事件的 Qt 表单。在我的另一个类(测试类)中,我创建了这个表单的一个实例,并希望处理来自“测试”类的表单的关闭事件。

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

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

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

4

2 回答 2

0

我的解决方案 -

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

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

添加信号 OnClose();

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

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

于 2013-09-26T23:31:39.257 回答
0

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

事件处理如下:

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

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

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

不涉及信号/时隙。

如果要处理其他对象的事件(aQWidget是 a QObject),则必须在它们上安装事件过滤器。您的事件过滤器将对您关心的事件做出反应,同时继续传递其他事件。

于 2013-09-26T19:44:13.083 回答