C++ QT:刷新UI的实现机制
我有一个带有一些小部件的GUI应用程序。 我想实现一种机制,使小部件能够“注册”到事件(从我定义的列表中),当事件发生时,将调用注册到该事件的所有小部件的“刷新”方法 我考虑用“Refresh”方法声明一个“Refresh”接口 我的主要问题是,我能想到的任何实现(我主要考虑用信号和插槽实现)都需要从C++ QT:刷新UI的实现机制,c++,qt,user-interface,C++,Qt,User Interface,我有一个带有一些小部件的GUI应用程序。 我想实现一种机制,使小部件能够“注册”到事件(从我定义的列表中),当事件发生时,将调用注册到该事件的所有小部件的“刷新”方法 我考虑用“Refresh”方法声明一个“Refresh”接口 我的主要问题是,我能想到的任何实现(我主要考虑用信号和插槽实现)都需要从QObject继承可刷新接口(因此将存储一些元数据,我将能够使用信号和插槽),这意味着widget将无法从Refreshable派生,因为它们已经通过QWidget继承了QObject 如有任何帮助
QObject
继承可刷新接口(因此将存储一些元数据,我将能够使用信号和插槽),这意味着widget将无法从Refreshable派生,因为它们已经通过QWidget
继承了QObject
如有任何帮助/想法,将不胜感激 您正在尝试设计一个解决方案,该解决方案已经在Qt中提供得足够好了。每个QWidget都有插槽
repaint()
(强制立即)和update()
(排队延迟)。这就是你所需要的一切,让你恢复精力。换句话说,QWidget已经实现了理论上可以刷新的界面。是的,你的观察是正确的,你不能从QWidget继承,还有一个“接口”,它也必须从QObject继承才能声明插槽。我认为,如果您停止调用它的接口,它会变得更清晰,因为从技术上讲,它不是——至少在纯虚拟类的意义上是如此。您希望何时刷新GUI?用户点击?还是在新数据到来时自动刷新?我使用普通信号和插槽刷新了GUI。在插槽中,添加所有刷新方法。您的意思是拥有从“可刷新”继承的小部件吗?对您的描述有点困惑,但它应该可以通过信号/插槽机制实现,这取决于您的事件触发器。