Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QT:刷新UI的实现机制_C++_Qt_User Interface - Fatal编程技术网

C++ QT:刷新UI的实现机制

C++ QT:刷新UI的实现机制,c++,qt,user-interface,C++,Qt,User Interface,我有一个带有一些小部件的GUI应用程序。 我想实现一种机制,使小部件能够“注册”到事件(从我定义的列表中),当事件发生时,将调用注册到该事件的所有小部件的“刷新”方法 我考虑用“Refresh”方法声明一个“Refresh”接口 我的主要问题是,我能想到的任何实现(我主要考虑用信号和插槽实现)都需要从QObject继承可刷新接口(因此将存储一些元数据,我将能够使用信号和插槽),这意味着widget将无法从Refreshable派生,因为它们已经通过QWidget继承了QObject 如有任何帮助

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

我考虑用“Refresh”方法声明一个“Refresh”接口

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


如有任何帮助/想法,将不胜感激

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

您希望何时刷新GUI?用户点击?还是在新数据到来时自动刷新?我使用普通信号和插槽刷新了GUI。在插槽中,添加所有刷新方法。您的意思是拥有从“可刷新”继承的小部件吗?对您的描述有点困惑,但它应该可以通过信号/插槽机制实现,这取决于您的事件触发器。