我有一个带有一些小部件的GUI应用程序。 我想实现一种机制,使小部件能够“注册”到事件(来自我定义的列表),并且当事件发生时,将调用注册到此事件的所有小部件的“刷新”方法。
我考虑使用“刷新”方法声明“可刷新”界面。
我的主要问题是我能想到的任何实现(我主要考虑用信号和插槽实现它)将要求Refreshable接口继承QObject
(因此一些元数据将被存储并且我将能够使用信号和插槽),这意味着小部件无法从Refreshable派生,因为它们已经通过QObject
继承QWidget
。
任何帮助/想法都将受到高度赞赏!
答案 0 :(得分:2)
您正在尝试设计一个已在Qt中提供的解决方案。每个QWidget都有插槽repaint()
(强制立即)和update()
(排队延迟)。这就是你应该为你的可刷新性所需要的一切。换句话说,QWidget已经实现了理论上你的Refreshable接口。是的,你是正确的观察到你不能继承QWidget和另一个必须从QObject继承的“接口”,以便能够声明一个槽。我认为如果你停止调用界面会更清楚,因为技术上它不是 - 至少在纯虚拟类的意义上。