1

我有一个带有一些小部件的 GUI 应用程序。我想实现一种机制,使小部件能够“注册”到事件(从我定义的列表中),并且当事件发生时,将调用注册到该事件的所有小部件的“刷新”方法。

我想过用“Refresh”方法声明一个“Refreshable”接口。

我的主要问题是我能想到的任何实现(我主要考虑用信号和插槽实现它)都需要从 Refreshable 接口继承QObject(因此将存储一些元数据,我将能够使用信号和插槽),这意味着小部件将无法从 Refreshable 派生,因为它们已经QObject通过QWidget.

任何帮助/想法将不胜感激!

4

1 回答 1

3

您正在尝试设计一个已经在 Qt 中提供的足够好的解决方案。每个 QWidget 都有槽repaint()(强制立即)和update()(排队延迟)。这就是你应该为你的可刷新性所需要的一切。换句话说,QWidget 已经实现了理论上的 Refreshable 接口。是的,你的观察是正确的,你不能从 QWidget 继承,而另一个“接口”也必须从 QObject 继承才能声明一个插槽。我认为如果你停止调用它接口会变得更清楚,因为从技术上讲它不是 - 至少在纯虚拟类的意义上。

于 2012-08-07T09:03:17.240 回答